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

Telegram Bot调用API检测用户在线状态并返回布尔值的技术咨询

Telegram Bot 用户在线状态检测Python实现方案

首先明确前提:Telegram 官方公开的 Bot API 没有提供直接获取用户在线状态的接口,这是平台出于用户隐私保护做的权限限制,你可以通过以下两种替代方案实现需求:

方案1:使用用户端API实现(准确度最高)

该方案使用普通Telegram账号的权限而非Bot权限调用接口,依赖Telethon/Pyrogram这类用户客户端开发库实现:

  • 第一步:安装依赖库
    pip install telethon
  • 第二步:获取API凭证
    使用普通Telegram账号登录Telegram官方开发者平台后申请api_id和api_hash,注意不能使用Bot Token,必须使用普通账号的凭证
  • 示例实现代码:
from telethon import TelegramClient
from telethon.tl.types import UserStatusOnline

# 替换为你自己的api_id、api_hash、普通账号session名
api_id = 123456
api_hash = '你的api_hash字符串'
client = TelegramClient('session_name', api_id, api_hash)

async def check_user_online(user_id: int) -> bool:
    async with client:
        user = await client.get_entity(user_id)
        # 判定用户状态是否为在线
        return isinstance(user.status, UserStatusOnline)

# 调用示例
# import asyncio
# print(asyncio.run(check_user_online(目标用户ID)))
  • 注意事项:
    • 仅能获取对你的普通账号开放了在线状态可见权限的用户状态,如果用户隐藏了在线状态或拉黑了你的账号,无法获取真实状态
    • 控制调用频率,建议两次查询间隔不低于60秒,高频调用会触发Telegram的限流机制,严重时会被封禁账号

方案2:仅使用Bot账号的间接实现(兼容性最高)

如果只能使用Bot权限开发,只能通过交互逻辑间接判断在线状态:

  • Bot向目标用户发送无打扰的回调消息(比如设置短时间自动销毁的占位消息,或者不需要用户手动输入的inline按钮回调)
  • 若用户在设定的超时时间内有响应(点击按钮/回复消息),返回True,否则返回False
  • 该方案准确度较低,仅适合用于已主动和Bot有过交互的活跃用户检测

通用限制

Telegram平台的隐私规则允许用户对所有人隐藏在线状态,没有任何方案可以绕过该限制获取用户的真实在线状态,所有实现的检测结果仅作为参考。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:03