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

Telegram贴纸发送脚本报错求助:类型错误与PEP 8规范问题

问题解决方案

1. 核心类型错误修复

第一个错误Expected type 'int', got 'str' instead :15是因为API_ID需要传入整数而非字符串,Telethon的TelegramClient初始化时,API_ID必须是整数类型,API_HASH保留字符串格式即可。修改代码开头的API配置:

API_ID = 123456  # 替换成你实际的API_ID(去掉引号,用整数)
API_HASH = '你的实际API_HASH'  # 保留字符串格式

2. PEP 8格式规范修复

(1)空行问题

  • 在messages_sent = 0后新增一行空行,保证def main():前有2个空行
  • 在main()函数结束后新增一行空行,保证if __name__ == "__main__":前有2个空行

(2)行过长问题

把过长的列表拆分成多行,提升代码可读性:

  • 拆分聊天用户名列表:
chat_usernames = [
    '@forexjobinkiev', '@spb_work_choogl', '@temshchik_chat',
    '@work_online_today', '@freelancerchat1', '@chat_sportbetwiner',
    '@SravkiS', '@dropshiping_tovarka_ua', '@Kiev_Work_Job682', '@robota_com5'
]
  • 拆分贴纸ID列表:
sticker_ids = [
    'CAACAgEAAxkBAAK2RmTUSWd8kMnKSh4vNz_YpKaRGL2tAAIuAwAC4WihRo38v4W03s7TMAQ',
    'CAACAgEAAxkBAAK2SGTUSYInvjbUPyaP3mpG22JsVhjiAAIYBAACwHKgRlJDWLOjrJKVMAQ'
]

3. 逻辑错误修复(核心功能问题)

原代码的循环逻辑会导致未发够35个贴纸就直接进入24小时等待,需要调整为:发满35个后再等待24小时,循环重置计数后重新发送。修改后的完整代码:

from telethon.sync import TelegramClient
import time
import datetime

API_ID = 123456  # 替换为你的实际API_ID(整数)
API_HASH = '你的实际API_HASH'  # 替换为你的实际API_HASH

messages_sent = 0

def main():
    global messages_sent

    chat_usernames = [
        '@forexjobinkiev', '@spb_work_choogl', '@temshchik_chat',
        '@work_online_today', '@freelancerchat1', '@chat_sportbetwiner',
        '@SravkiS', '@dropshiping_tovarka_ua', '@Kiev_Work_Job682', '@robota_com5'
    ]
    sticker_ids = [
        'CAACAgEAAxkBAAK2RmTUSWd8kMnKSh4vNz_YpKaRGL2tAAIuAwAC4WihRo38v4W03s7TMAQ',
        'CAACAgEAAxkBAAK2SGTUSYInvjbUPyaP3mpG22JsVhjiAAIYBAACwHKgRlJDWLOjrJKVMAQ'
    ]

    with TelegramClient('anon', API_ID, API_HASH) as client:
        while True:
            # 重置发送计数,开始新一轮发送
            messages_sent = 0
            
            # 循环发送直到达到35个
            while messages_sent < 35:
                for chat_username in chat_usernames:
                    if messages_sent >= 35:
                        break
                    chat_entity = client.get_entity(chat_username)
                    for sticker_id in sticker_ids:
                        if messages_sent >= 35:
                            break
                        client.send_sticker(chat_entity, sticker=sticker_id)
                        messages_sent += 1
                        time.sleep(20)
            
            # 发送完成后,等待24小时
            print(f"已发送{messages_sent}个贴纸,等待24小时后继续...")
            time.sleep(24 * 60 * 60)

if __name__ == "__main__":
    main()

4. 依赖库检查

确保已安装Telethon库,若未安装执行以下命令:

pip install telethon

若安装失败,可尝试指定稳定版本:

pip install telethon==1.33.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:30:28