コード例 #1
0
ファイル: msg_proc.py プロジェクト: orderlin/simple-qq-bot
 def top(message, sender_qq, sender, msg):
     db = MyDB()
     users = [
         ReplyStrings.user_line % (user[0], user[1])
         for user in db.top_user()
     ]
     return ReplyStrings.users_about % sender_qq + u"\n".join(users)
コード例 #2
0
ファイル: msg_proc.py プロジェクト: ihciah/simple-qq-bot
 def querytalk(message, sender_qq, sender, msg):
     db = MyDB()
     mt = msg[u'content'].split(' ')[0]
     content = msg[u'content'][(len(mt) + 1):]
     res = db.query_admin(content)
     lines = [ReplyStrings.talk_line % (line[0][:50], line[1][:50], line[2], str(line[5])) for line in res]
     return ReplyStrings.information_about % content + u"\n".join(lines)
コード例 #3
0
ファイル: msg_proc.py プロジェクト: orderlin/simple-qq-bot
 def querytalk(message, sender_qq, sender, msg):
     db = MyDB()
     mt = msg[u'content'].split(' ')[0]
     content = msg[u'content'][(len(mt) + 1):]
     res = db.query_admin(content)
     lines = [
         ReplyStrings.talk_line %
         (line[0][:50], line[1][:50], line[2], str(line[5])) for line in res
     ]
     return ReplyStrings.information_about % content + u"\n".join(lines)
コード例 #4
0
ファイル: plugin.py プロジェクト: orderlin/simple-qq-bot
 def query_coin(msg):
     message = msg[u'content']
     sender_qq = msg[u'sender_qq']
     db = MyDB()
     if msg[u'type'] == u'group_message':
         my_name = msg[u'receiver']
         message = message.replace(u'@' + my_name, u'').strip()
     if message.lower() in ReplyStrings.query_coin:
         user = db.get_user_info(sender_qq)
         if not user:
             return True, ReplyStrings.unknown_error
         coin = user[1]
         return True, ReplyStrings.coin_count % coin
     return False, u''
コード例 #5
0
ファイル: plugin.py プロジェクト: orderlin/simple-qq-bot
    def chat(msg):
        mem = Memcache()
        db = MyDB()
        message = msg[u'content']
        sender_qq = msg[u'sender_qq']
        sender = msg[u'sender']
        type = msg[u'type']
        gid = 0
        if type == u'group_message':
            my_name = msg[u'receiver']
            gid = msg[u'gnumber']
            message = message.replace(u'@' + my_name, u'').strip()

        # ----Check if user send too many same content----
        if not mem.check_last_chat_same(sender_qq, message):
            return True, u""

        history_state, history = mem.check_history(sender_qq, gid=gid)
        # ----In learning mode----
        if history_state is not None:
            if history_state == mem.WAIT_ANSWER:
                mem.clear_state(sender_qq, gid=gid)
                db.insert_chat(history, message, sender_qq, gid=gid)
                success_message = random.choice(ReplyStrings.success_messages)
                success_message += ReplyStrings.feedback_user_submit % (history, message)
                db.mod_coin(sender_qq, Coin.learn)
                return True, success_message
            else:
                mem.set_before_answer(sender_qq, message, gid=gid)
                success_message = random.choice(ReplyStrings.waiting_answer)
                return True, success_message

        # ----Enter learning mode----
        if message.lower() in ReplyStrings.learn_commands:
            mem.set_before_ask(sender_qq, gid=gid)
            success_message = random.choice(ReplyStrings.waiting_ask)
            return True, success_message

        # ----Normal chat mode----
        answer = db.query_question(message)
        logging.info(answer)
        if answer is None:
            if FuncSettings.turing_robot_enabled and AdvancedSettings.turing_robot_api:
                turing_bot = TuringBot(message, sender_qq)
                fail_message = turing_bot.proc_message()
                if fail_message == u'':
                    fail_message = random.choice(ReplyStrings.not_found_messages)
            else:
                fail_message = random.choice(ReplyStrings.not_found_messages)
            return True, fail_message
        db.mod_coin(sender_qq, Coin.chat)
        return True, answer[1]
コード例 #6
0
ファイル: plugin.py プロジェクト: orderlin/simple-qq-bot
 def lotty(msg):
     message = msg[u'content']
     sender_qq = msg[u'sender_qq']
     db = MyDB()
     if msg[u'type'] == u'group_message':
         my_name = msg[u'receiver']
         message = message.replace(u'@' + my_name, u'').strip()
     if message in ReplyStrings.lotty:
         user = db.get_user_info(sender_qq)
         if not user:
             return True, ReplyStrings.unknown_error
         coin = user[1]
         if coin < Coin.lotty_price:
             return True, ReplyStrings.insufficient_coin % (Coin.lotty_price, coin)
         got = int(random.normalvariate(Coin.lotty_mu, Coin.lotty_sigma))
         got = max(got, Coin.lotty_min)
         got = min(got, Coin.lotty_max)
         db.mod_coin(sender_qq, got)
         return True, ReplyStrings.lotty_win % (got, Coin.lotty_max)
     return False, u""
コード例 #7
0
ファイル: plugin.py プロジェクト: orderlin/simple-qq-bot
 def disable_group(msg):
     message = msg[u'content']
     sender_qq = msg[u'sender_qq']
     sender = msg[u'sender']
     gid = msg[u'gnumber']
     my_name = msg[u'receiver']
     message = message.replace(u'@' + my_name, u'').strip()
     if message in ReplyStrings.disable_group or message in ReplyStrings.enable_group:
         u = UserMod()
         r = u.check_group_admin(gid, sender_qq)
         if r == u.IS_ADMIN:
             db = MyDB()
             if message in ReplyStrings.enable_group:
                 db.disable_group(gid, False)
                 return True, ReplyStrings.group_enable
             else:
                 db.disable_group(gid, True)
                 return True, ReplyStrings.group_disable
         return True, ReplyStrings.group_admin_info[r]
     mem = Memcache()
     if not mem.check_disable_group(gid):
         return True, u''
     return False, u''
コード例 #8
0
ファイル: msg_proc.py プロジェクト: ihciah/simple-qq-bot
 def unblockgroup(message, sender_qq, sender, msg):
     if len(message) == 0:
         return ReplyStrings.invalid_command
     db = MyDB()
     db.block_group(message[0], unblock=True)
     return ReplyStrings.unblock_group % message[0]
コード例 #9
0
ファイル: msg_proc.py プロジェクト: ihciah/simple-qq-bot
 def blockuser(message, sender_qq, sender, msg):
     if len(message) == 0:
         return ReplyStrings.invalid_command
     db = MyDB()
     db.block_user(message[0])
     return ReplyStrings.block_user % message[0]
コード例 #10
0
ファイル: msg_proc.py プロジェクト: ihciah/simple-qq-bot
 def deletetalk(message, sender_qq, sender, msg):
     db = MyDB()
     mt = msg[u'content'].split(' ')[0]
     content = msg[u'content'][(len(mt) + 1):]
     db.delete_talk(sender_qq, content, is_super=True)
     return ReplyStrings.delete_success
コード例 #11
0
ファイル: msg_proc.py プロジェクト: ihciah/simple-qq-bot
 def top(message, sender_qq, sender, msg):
     db = MyDB()
     users = [ReplyStrings.user_line % (user[0], user[1]) for user in db.top_user()]
     return ReplyStrings.users_about % sender_qq + u"\n".join(users)
コード例 #12
0
ファイル: msg_proc.py プロジェクト: orderlin/simple-qq-bot
 def unblockgroup(message, sender_qq, sender, msg):
     if len(message) == 0:
         return ReplyStrings.invalid_command
     db = MyDB()
     db.block_group(message[0], unblock=True)
     return ReplyStrings.unblock_group % message[0]
コード例 #13
0
ファイル: msg_proc.py プロジェクト: orderlin/simple-qq-bot
 def blockuser(message, sender_qq, sender, msg):
     if len(message) == 0:
         return ReplyStrings.invalid_command
     db = MyDB()
     db.block_user(message[0])
     return ReplyStrings.block_user % message[0]
コード例 #14
0
ファイル: msg_proc.py プロジェクト: orderlin/simple-qq-bot
 def deletetalk(message, sender_qq, sender, msg):
     db = MyDB()
     mt = msg[u'content'].split(' ')[0]
     content = msg[u'content'][(len(mt) + 1):]
     db.delete_talk(sender_qq, content, is_super=True)
     return ReplyStrings.delete_success