def demote(bot: Bot, update: Update): logger.info("promote user...") chat_id, users = get_chat_id_and_users(bot, update) if not users: send_message(bot, chat_id, TIP_TEMPLATE + '进行管理员添加操作') for user in users: user.demote(bot, chat_id) logger.info("promote user done!!")
def unban(bot: Bot, update: Update): logger.info("unban user...") chat_id, users = get_chat_id_and_users(bot, update) if not users: send_message(bot, chat_id, TIP_TEMPLATE + '进行解冻') for user in users: AllChats.unban(bot, chat_id, user) logger.info("unban user done!!!")
def get_status(bot: Bot, update: Update): logger.info("get_status user...") chat_id, users = get_chat_id_and_users(bot, update) if not users: send_message(bot, chat_id, TIP_TEMPLATE + '进行用户状态查看') for user in users: memo = "不在黑名单中" if user.is_active else "已被全球拉黑" send_message(bot, chat_id, f'该用户 {user.mention()} {memo}({user.status_cn(bot, chat_id)})') logger.info("get_status done!!")
def is_admin(bot: Bot, update: Update): logger.info("checking user is manager...") chat_id, users = get_chat_id_and_users(bot, update) if not users: send_message(bot, chat_id, TIP_TEMPLATE + '进行管理员查询操作') for user in users: status = "管理员" if user.is_manager(bot, chat_id) else "普通用户" send_message(bot, chat_id, f'该用户的状态:{status}') logger.info("checking user is manager done!!")
def new_chat_members(bot: Bot, update: Update): logger.info("new chat members...") message = update.message for user in message.new_chat_members: # 添加群组至数据库 if user.is_bot and user.id == bot.id: TelegramChat.add(message.chat.id, message.chat.title) start(bot, update) # 用户在黑名单中的话,无法加入 user_db, __ = TelegramUser.get_or_create(user.id, user.username) user = User.build_user_from_db(user_db) if not user.is_active: user.ban(bot, chat_id=message.chat.id) logger.info("new chat members... done!")
def left_chat_member(bot: Bot, update: Update): logger.info("left chat members...") message = update.message left_user = update.message.left_chat_member # 将机器人所在群组删除 if left_user.is_bot and left_user.id == bot.id: removed = TelegramChat.remove(message.chat.id) logger.info( f" find bot {left_user.full_name}, chat {message.chat.title} removed({removed})" ) logger.info(f"done!!")
def groups(bot: Bot, update: Update): logger.info("querying all groups...") chat_id = update.message.chat.id bot.send_message(chat_id, ", ".join(AllChats.get_chat_names()), parse_mode=None) logger.info("done")
def reply_handler(bot: Bot, update: Update): logger.info("handle user message...") t_user = update.message.from_user user, created = TelegramUser.get_or_create(t_user.id, t_user.username) logger.info(f"handle user done!! user: {user}, created: {created}")
def start(bot: Bot, update: Update): message = update.message chat_id = message.chat.id logger.info(f"hello, current_chat: {chat_id}") bot.send_message(chat_id, HELP, parse_mode=ParseMode.MARKDOWN)