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

如何通过Telegram API实现机器人追踪用户添加及添加者

如何通过Telegram API追踪用户被添加的时间及操作者

刚好做过类似的需求,来分享下具体实现步骤和注意点:

核心逻辑:监听群成员变更事件

Telegram Bot API本身没有专门的「用户被添加」触发事件,但可以通过监听群成员状态变更来捕获用户加入的动作。当有用户被添加到机器人所在的群聊时,Bot会收到ChatMemberUpdated类型的更新,里面包含了我们需要的所有关键信息。

具体实现步骤

1. 确保机器人拥有必要权限

首先要通过BotFather给机器人开启「查看群成员」的权限,否则Bot无法接收到群成员变更的通知。另外,在代码中需要指定监听chat_member类型的更新。

2. 解析更新数据提取关键信息

当Bot收到ChatMemberUpdated更新时,我们需要判断这是「新用户被添加」的动作:

  • 当new_chat_member.status为member或administrator,且old_chat_member.status为left或kicked时,说明这是用户首次加入(或被从黑名单拉回)群聊
  • 从update.date可以直接获取用户被添加的时间(是Python的datetime对象,方便处理)
  • chat_member_update.from_user就是执行添加操作的操作者信息(ID、用户名等)
  • new_chat_member.user是被添加的目标用户信息

3. 代码示例(Python + python-telegram-bot v20+)

这是最常用的Python Bot库,示例代码如下:

首先安装依赖:

pip install python-telegram-bot --upgrade

然后编写核心逻辑:

from telegram import Update, ChatMember
from telegram.ext import ApplicationBuilder, ContextTypes, ChatMemberHandler

async def handle_user_add(update: Update, context: ContextTypes.DEFAULT_TYPE):
    chat_member_update = update.chat_member
    new_member = chat_member_update.new_chat_member
    old_member = chat_member_update.old_chat_member
    operator = chat_member_update.from_user
    add_time = update.date  # UTC时间,可按需转本地时间

    # 过滤出「新用户被添加」的场景
    if (new_member.status in [ChatMember.MEMBER, ChatMember.ADMINISTRATOR] and
        old_member.status in [ChatMember.LEFT, ChatMember.KICKED]):
        added_user = new_member.user
        # 这里可以把数据存入数据库(比如SQLite、MySQL)
        print(f"用户 {added_user.id} (@{added_user.username}) 被操作者 {operator.id} (@{operator.username}) 在 {add_time} 添加到群聊 {chat_member_update.chat.id}")

def main():
    # 替换成你的机器人Token
    app = ApplicationBuilder().token("YOUR_BOT_TOKEN").build()

    # 添加群成员变更处理器
    app.add_handler(ChatMemberHandler(handle_user_add, ChatMemberHandler.CHAT_MEMBER))

    app.run_polling()

if __name__ == '__main__':
    main()

注意事项

  • 如果是机器人自身拉用户进群,from_user字段会是机器人自己的账号信息
  • 时间update.date是UTC时区,你可以用pytz库转换为本地时区
  • 一定要持久化数据,把用户ID、操作者ID、添加时间、群聊ID存入数据库,避免重启Bot后丢失记录
  • 对于超级大群,可能会有延迟收到更新的情况,建议做好异常处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:35:34