如何使用python-telegram-bot库自动批准群组加入请求?
自动批准Telegram私有群组加入请求的实现方案
前置要求
- 机器人必须是目标私有群组的管理员,且拥有管理成员权限
- 确认你的
python-telegram-bot版本(v13和v20+ API差异极大)
针对python-telegram-bot v20+(最新稳定版)
v20+采用异步架构,代码示例如下:
from telegram import Update from telegram.ext import ApplicationBuilder, ChatJoinRequestHandler, ContextTypes async def approve_join_request(update: Update, context: ContextTypes.DEFAULT_TYPE): # 获取请求信息 chat_id = update.effective_chat.id user_id = update.effective_user.id # 批准请求 await context.bot.approve_chat_join_request(chat_id=chat_id, user_id=user_id) # 可选:发送通知给用户 await context.bot.send_message(chat_id=user_id, text="你的加入请求已被批准!") def main(): # 替换成你的机器人Token BOT_TOKEN = "你的机器人Token" application = ApplicationBuilder().token(BOT_TOKEN).build() # 添加加入请求处理器 application.add_handler(ChatJoinRequestHandler(approve_join_request)) # 启动机器人 application.run_polling() if __name__ == "__main__": main()
针对python-telegram-bot v13(旧版本)
v13采用同步架构,代码示例如下:
from telegram import Update from telegram.ext import Updater, ChatJoinRequestHandler, CallbackContext def approve_join_request(update: Update, context: CallbackContext): chat_id = update.effective_chat.id user_id = update.effective_user.id # 批准请求 context.bot.approve_chat_join_request(chat_id=chat_id, user_id=user_id) # 可选:发送通知给用户 context.bot.send_message(chat_id=user_id, text="你的加入请求已被批准!") def main(): BOT_TOKEN = "你的机器人Token" updater = Updater(BOT_TOKEN) dp = updater.dispatcher dp.add_handler(ChatJoinRequestHandler(approve_join_request)) updater.start_polling() updater.idle() if __name__ == "__main__": main()
常见问题排查
- 权限不足:进入群组设置→管理员,确认机器人的权限包含「管理成员」,且是管理员身份
- 请求未触发:确认群组是私有状态(设置→群组类型→私有),且用户申请加入时请求会发送到机器人
- 版本不兼容:如果报错
AttributeError,检查是否混用了不同版本的API,比如v20里必须用异步方法await context.bot.approve_chat_join_request,不能用同步调用
内容的提问来源于stack exchange,提问作者Lunar
相关产品推荐
相关产品推荐

