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

CentOS下Telegram Python自动化发消息脚本报错排查

报错原因

报错核心是参数类型不匹配:Telegram底层MTProto协议序列化请求时,要求user_id、access_hash、api_id这类ID类参数必须是整数类型,你当前代码里这些参数都传了字符串,序列化时直接抛出required argument is not an integer错误。从报错日志里的InputPeerUser(user_id='user_id', access_hash='user_hash')就能看出来,两个参数都带字符串的引号标记,类型完全不符合要求。

具体修改点
  • 修正api_id类型:把你申请到的Telegram API ID从字符串改成整数,去掉外层单引号,示例:
# 错误写法
api_id = '1234567'
# 正确写法
api_id = 1234567

api_hash本身是字符串,保留引号即可。

  • 修正接收方构造逻辑:不要手动传字符串形式的user_id和user_hash给InputPeerUser,两个参数都必须是整数。更简单的写法是完全不用手动构造InputPeerUser对象,直接把整数形式的接收方用户ID传给send_message方法即可,Telethon会自动完成peer解析,避免手动构造的类型错误:
# 原错误写法
# receiver = InputPeerUser('user_id', 'user_hash')
# client.send_message(receiver, message, parse_mode='html')
# 正确写法
receiver_id = 123456789  # 替换成你实际要发送的目标用户ID,整数类型,不要加引号
client.send_message(receiver_id, message, parse_mode='html')
  • 删除冗余代码:你代码里定义的token = 'telegram token'在手机号登录的用户客户端模式下完全用不到,直接删掉即可,避免和Bot模式的逻辑混淆。
CentOS服务器部署额外注意事项
  • 第一次运行脚本完成验证码登录后,运行目录下生成的.session会话文件要保留,给运行脚本的用户开放该文件的读写权限,后续运行不需要重复接收验证码登录。
  • 确认Telethon依赖版本,执行pip install -U telethon升级到最新稳定版,避免旧版本存在的类型校验兼容问题。
  • 如果需要获取目标用户的正确ID和access_hash,可以先运行脚本拉取自己的对话列表,从对话实体里拿整数类型的对应值,不要自己随便填字符串占位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:24:12