You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Telegram Bot中使用updatePendingJoinRequests实现预加入私信功能

解决Telegram Bot处理频道加入申请并发送私信的问题

核心问题排查方向

  • Bot权限验证:确保你的Bot已被添加为频道管理员,且开启了管理频道加入请求权限,同时拥有发送私信权限(部分场景下需要Bot与用户有过互动,或者用户未屏蔽Bot)
  • API调用逻辑错误:
    • 监听加入请求时,需使用getChatJoinRequests接口获取申请列表,而非仅依赖Webhook推送(Webhook配置有误可能导致收不到事件)
    • 发送私信时,直接调用sendMessage接口传入用户ID即可,但需注意:若用户未主动发起过对话,Bot可能无法发送消息,此时可尝试通过回复加入请求的方式触发私信
  • 框架适配问题:如果使用第三方Bot框架(如python-telegram-bot、pyrogram),需确认框架版本是否支持频道加入请求的最新API,旧版本可能存在兼容问题

关键代码示例(以Pyrogram为例)

from pyrogram import Client, filters
from pyrogram.types import ChatJoinRequest

app = Client("my_bot")

@app.on_chat_join_request()
async def handle_join_request(client, request: ChatJoinRequest):
    # 收集用户信息
    user_info = {
        "user_id": request.from_user.id,
        "username": request.from_user.username,
        "full_name": request.from_user.full_name,
        "request_date": request.date
    }
    # 尝试发送私信
    try:
        await client.send_message(
            chat_id=request.from_user.id,
            text="感谢你的申请,我们正在审核,稍后会通知你结果"
        )
        # 可根据需求选择是否自动批准,或留待手动处理
        # await client.approve_chat_join_request(request.chat.id, request.from_user.id)
    except Exception as e:
        print(f"发送私信失败: {str(e)}")

app.run()

常见坑点规避

  • 频道隐私设置:确保频道的允许通过链接申请选项已开启,且Bot的管理员权限覆盖该设置
  • 私信限制:Telegram限制Bot向未主动对话的用户发送消息,若发送失败,可引导用户先给Bot发一条消息,或在加入请求的回复中附带Bot的对话链接
  • 事件监听遗漏:部分框架需要手动开启ChatJoinRequest事件监听,需检查框架配置是否正确

内容的提问来源于stack exchange,提问作者alex montaba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:44:59