如何修复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
相关产品推荐
相关产品推荐

