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)
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)
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)
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''
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]
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""
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''
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]
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]
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
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)