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

如何在Telegram中获取user_hash?——使用Telethon与Telebot开发Python通知功能的参数疑问

如何获取Telethon中InputPeerUser需要的user_hash(access_hash)

其实你完全不用手动去查找user_hash(准确来说是access_hash),Telethon已经提供了便捷的方法来自动处理这个参数,而且这也是最稳妥的方式,避免手动存储hash带来的过期或错误问题。下面给你两种可行的方案:

方案一:直接获取可用的InputPeerUser(推荐)

Telethon的client.get_input_entity()方法可以直接根据user_id返回包含正确access_hash的InputPeerUser对象,你不需要手动拼接参数。示例代码如下:

from telethon import TelegramClient
import asyncio

# 替换成你自己的配置
API_ID = 你的api_id
API_HASH = "你的api_hash"
SESSION_NAME = "my_session"

async def send_notification(user_id, message):
    async with TelegramClient(SESSION_NAME, API_ID, API_HASH) as client:
        # 自动获取包含access_hash的InputPeer
        receiver = await client.get_input_entity(user_id)
        # 发送通知
        await client.send_message(receiver, message)

# 调用示例:替换成目标用户的user_id和你的通知内容
asyncio.run(send_notification(123456789, "这是一条测试通知"))

方案二:手动提取access_hash(仅作了解)

如果你确实想获取这个hash值,可以通过client.get_entity()方法获取用户的完整实体信息,然后从中提取access_hash属性:

async def get_user_access_hash(user_id):
    async with TelegramClient(SESSION_NAME, API_ID, API_HASH) as client:
        user_entity = await client.get_entity(user_id)
        print(f"用户的access_hash是:{user_entity.access_hash}")
        return user_entity.access_hash

# 调用获取hash
asyncio.run(get_user_access_hash(123456789))

注意事项

  • access_hash是Telegram用于验证用户实体合法性的参数,不建议手动存储,因为它理论上存在过期或变更的可能,每次发送前通过get_input_entity获取是最可靠的。
  • 如果目标用户是隐私设置较高的账号,你需要确保你的Telethon账号已经添加对方为好友,或者双方在同一个群组中,否则可能无法获取到用户的实体信息。

内容的提问来源于stack exchange,提问作者Federico De Marco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:47:33