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

如何获取与我的机器人交互过的所有用户列表?及第三方实现方法咨询

获取与机器人交互过的用户列表实现方案

由于多数平台不会直接提供“所有交互用户”的查询接口,这类功能核心是机器人主动记录并管理交互用户数据,结合bot token做权限校验,具体实现步骤如下:

核心实现逻辑

  1. 实时捕获交互并记录用户
    当机器人收到用户的任何交互(消息、命令、按钮点击等)时,提取用户的唯一标识(如user_id)、用户名等基础信息,同时记录交互时间戳,存入存储服务(如Redis、轻量数据库)。
    示例伪代码:

    def process_user_interaction(update):
        # 从交互事件中提取用户信息
        user_id = update.from_user.id
        username = update.from_user.username
        last_interact_time = datetime.utcnow().isoformat()
        
        # 用bot token做身份校验后,写入存储
        if validate_bot_token(request.headers.get("X-Bot-Token")):
            storage.hset(f"interacted_users", user_id, json.dumps({
                "username": username,
                "last_interact_time": last_interact_time
            }))
    
  2. 基于Bot Token的权限控制
    所有读写用户数据的操作,都需要通过bot token进行身份验证,确保只有你的机器人能访问这些数据。比如在调用存储接口时,将token作为请求参数或请求头传递,服务端验证通过后再执行操作。

  3. 自动清理过期数据
    针对“数据保存不超过24小时”的要求,设置定时任务(如CRON脚本),定期删除超过24小时未交互的用户记录:

    def clean_expired_users():
        cutoff_time = (datetime.utcnow() - timedelta(hours=24)).isoformat()
        # 遍历所有用户记录,筛选过期数据
        all_users = storage.hgetall("interacted_users")
        expired_user_ids = [
            user_id for user_id, data in all_users.items()
            if json.loads(data)["last_interact_time"] < cutoff_time
        ]
        # 删除过期记录
        if expired_user_ids:
            storage.hdel("interacted_users", *expired_user_ids)
    
  4. 查询交互用户列表
    当需要获取用户列表时,直接从存储中读取所有有效记录即可:

    def get_interacted_users_list():
        if validate_bot_token(request.headers.get("X-Bot-Token")):
            all_users = storage.hgetall("interacted_users")
            return [json.loads(data) for data in all_users.values()]
        return []
    

关键注意事项

  • 因为机器人无法获取历史对话记录,必须实时触发记录逻辑,不能事后补录用户信息,否则会遗漏未被捕获的交互用户。
  • 务必使用平台提供的用户唯一ID(如Telegram的user_id、Discord的id)作为存储键,避免同一用户被重复记录。
  • 定时清理任务要保证执行频率,比如每小时执行一次,确保过期数据及时被删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 08:55:09