Пример #1
0
 def get_user_balance(message):
   balance = session.query(model.Balance).filter_by(
       group=message.chat.id, user=message.from_user.username).one()
   old_balance = cherrypy.engine.publish(
       'get-user', message.chat.id, message.from_user.username)[0]
   bot.send_message(message.chat.id,
       'Your current balance is %.2f (%.2f from DB).' % (old_balance, balance.amount))
Пример #2
0
 def get_user_balance(message):
     balance = session.query(model.Balance).filter_by(
         group=message.chat.id, user=message.from_user.username).one()
     old_balance = cherrypy.engine.publish('get-user', message.chat.id,
                                           message.from_user.username)[0]
     bot.send_message(
         message.chat.id, 'Your current balance is %.2f (%.2f from DB).' %
         (old_balance, balance.amount))
Пример #3
0
def _ValidateUsers(users, chat_id):
  assert len(users)
  #available_usernames = list(*itertools.chain(
  #  cherrypy.engine.publish('get-all-users', chat_id)))
  available_usernames = [balance.user
      for balance in session.query(model.Balance).filter(Balance.group == chat_id)]
  valid, invalid = [], []
  for user in users:
    user = user[1:]  # Delete leading '@'.
    (invalid, valid)[user in available_usernames].append(user)
  return valid, invalid
Пример #4
0
def _ValidateUsers(users, chat_id):
    assert len(users)
    #available_usernames = list(*itertools.chain(
    #  cherrypy.engine.publish('get-all-users', chat_id)))
    available_usernames = [
        balance.user for balance in session.query(model.Balance).filter(
            Balance.group == chat_id)
    ]
    valid, invalid = [], []
    for user in users:
        user = user[1:]  # Delete leading '@'.
        (invalid, valid)[user in available_usernames].append(user)
    return valid, invalid
Пример #5
0
  def add_payments(message):
    usage_message = (
        'Please specify the payment amount after /pay, e.g. /pay 5.00')
    amount = None
    words = message.text.split()
    if not (len(words) == 2):
      bot.send_message(message.chat.id, usage_message)
      return
    try:
      amount = float(words[1])
    except ValueError:
      bot.send_message(message.chat.id, usage_message)
      return

    session_key = _GetSessionKey(message)
    session_is_open = cherrypy.engine.publish(
        'session-is-open', session_key)[0]
    if (session_is_open):
      open_session_message = (
          'Looks like you forgot to finish your previous session!')
      # TODO: Print out session info.
      bot.send_message(message.chat.id, open_session_message)
      return
    cherrypy.engine.publish('add-users-to-session', session_key,
        [message.from_user.username])

    payments = {message.from_user.username: amount}
    balance = session.query(model.Balance).filter_by(
        group=message.chat.id,
        user=message.from_user.username).one_or_none()
    if balance is None:
      balance = model.Balance(
          group=message.chat.id,
          user=message.from_user.username,
          amount=amount)
      session.add(balance)
    else:
      balance.amount += amount

    cherrypy.engine.publish(
        'add-payments', message.chat.id, payments)

    old_balance = cherrypy.engine.publish(
        'get-user', message.chat.id, message.from_user.username)[0]
    bot.send_message(message.chat.id,
        ('Thank you for your payment of %.2f, generous friend! '
         'Your total balance is %.2f now (%.2f in DB).' % (amount,
                                                           old_balance,
                                                           balance.amount)))
Пример #6
0
    def add_payments(message):
        usage_message = (
            'Please specify the payment amount after /pay, e.g. /pay 5.00')
        amount = None
        words = message.text.split()
        if not (len(words) == 2):
            bot.send_message(message.chat.id, usage_message)
            return
        try:
            amount = float(words[1])
        except ValueError:
            bot.send_message(message.chat.id, usage_message)
            return

        session_key = _GetSessionKey(message)
        session_is_open = cherrypy.engine.publish('session-is-open',
                                                  session_key)[0]
        if (session_is_open):
            open_session_message = (
                'Looks like you forgot to finish your previous session!')
            # TODO: Print out session info.
            bot.send_message(message.chat.id, open_session_message)
            return
        cherrypy.engine.publish('add-users-to-session', session_key,
                                [message.from_user.username])

        payments = {message.from_user.username: amount}
        balance = session.query(model.Balance).filter_by(
            group=message.chat.id,
            user=message.from_user.username).one_or_none()
        if balance is None:
            balance = model.Balance(group=message.chat.id,
                                    user=message.from_user.username,
                                    amount=amount)
            session.add(balance)
        else:
            balance.amount += amount

        cherrypy.engine.publish('add-payments', message.chat.id, payments)

        old_balance = cherrypy.engine.publish('get-user', message.chat.id,
                                              message.from_user.username)[0]
        bot.send_message(
            message.chat.id,
            ('Thank you for your payment of %.2f, generous friend! '
             'Your total balance is %.2f now (%.2f in DB).' %
             (amount, old_balance, balance.amount)))
Пример #7
0
 def debug(self):
   group = session.query(model.Group).get('123')
   if group is None:
     group = model.Group(id='123')
     session.add(group)
   return group.id
Пример #8
0
 def debug(self):
     group = session.query(model.Group).get('123')
     if group is None:
         group = model.Group(id='123')
         session.add(group)
     return group.id