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

如何修复Telethon向Telegram机器人发Emoji的Start参数无效错误

修复Telethon调用StartBotRequest时的"Start parameter invalid"错误

我尝试用以下代码通过Telethon给Telegram机器人发送Emoji:

text_found = None
messagetosend = '🏠'
with TelegramClient(username, api_id, api_hash) as client:
    @client.on(events.NewMessage(chats = botname))
    async def my_event_handler(event):
        global text_found
        text_found = event.raw_text
        await client.disconnect()
   # client(functions.messages.StartBotRequest(bot = botname, peer = '@user', start_param = emoji.emojize(':House Building:')+' Мой Кабинет'))
    client(functions.messages.StartBotRequest(bot = botname, peer = '@user', start_param = messagetosend))
    client.run_until_disconnected()

print(text_found)

但收到错误:Start parameter invalid (caused by StartBotRequest),该怎么修复?


错误原因

你使用的StartBotRequest对应调用机器人的/start命令并传递参数,而Telegram对这个start_param参数有严格格式限制:只能包含ASCII字母、数字、下划线(_)和连字符(-),且长度不能超过64字符。纯Emoji或者包含俄语字母、空格的参数都不符合要求,因此触发了错误。

修复方案

方案1:调整start_param为合法格式

如果确实需要通过/start命令传递参数,必须让参数符合规则。可以给Emoji搭配合法的ASCII字符前缀/后缀,比如:

messagetosend = 'home_🏠'  # 加入合法字符,使参数符合平台要求

也可以直接使用纯合法字符,之后再单独向机器人发送Emoji消息。

方案2:直接发送消息,无需调用/start命令

如果你的需求只是给机器人发送Emoji,而非启动机器人并传递参数,就不要用StartBotRequest,换成send_message方法直接发送消息即可:

text_found = None
messagetosend = '🏠'
with TelegramClient(username, api_id, api_hash) as client:
    @client.on(events.NewMessage(chats=botname))
    async def my_event_handler(event):
        global text_found
        text_found = event.raw_text
        await client.disconnect()
    
    # 直接向机器人发送消息
    await client.send_message(botname, messagetosend)
    client.run_until_disconnected()

print(text_found)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:55:22