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

如何在Python中使用Telethon库响应Telegram inline keyboard markup选项

使用Telethon触发Inline Keyboard选项的实现方案

Telethon原生提供了直接点击inline keyboard按钮的封装方法,不需要手动构造CallbackQuery请求,以下是两种可行实现方案:

方案1:主动获取消息后点击按钮

  • 首先获取包含inline keyboard的目标消息实例,可通过拉取对话历史、主动发消息后获取最新回复两种方式拿到消息对象
  • inline keyboard的按钮为二维数组结构,第一维对应按钮行,第二维对应每行内的按钮,索引从0开始计数
  • 可通过两种方式触发点击:按按钮文本匹配点击、按行列索引点击

示例代码:

from telethon import TelegramClient

# 替换为自己的API参数,可从Telegram开发者平台申请
api_id = 123456
api_hash = "your_api_hash_here"
client = TelegramClient("my_session", api_id, api_hash)

async def main():
    async with client:
        # 向目标机器人发送触发inline keyboard的指令
        await client.send_message("@target_bot_username", "/start")
        # 获取最新一条来自机器人的消息
        msg = (await client.get_messages("@target_bot_username", limit=1))[0]
        # 方式1:按按钮文本点击,文本需和按钮显示完全一致
        await msg.click(text="选项A")
        # 方式2:按行列索引点击,以下为点击第一行第二个按钮
        # await msg.click(row=0, column=1)

if __name__ == "__main__":
    client.loop.run_until_complete(main())

方案2:监听消息自动触发按钮点击

如果需要在机器人返回带inline keyboard的消息时自动点击,可通过事件回调实现:

from telethon import TelegramClient, events

api_id = 123456
api_hash = "your_api_hash_here"
client = TelegramClient("my_session", api_id, api_hash)

# 监听来自目标机器人的新消息
@client.on(events.NewMessage(from_users="@target_bot_username"))
async def auto_click(event):
    # 判断当前消息是否包含inline keyboard
    if event.buttons:
        # 匹配文本点击对应按钮
        await event.click(text="选项B")
        print("按钮已自动点击")

client.start()
client.run_until_disconnected()

注意事项

  • 若点击的是链接类型按钮,click()方法会直接返回跳转链接,不会发送CallbackQuery请求
  • 按文本点击时需要完全匹配按钮的显示内容,包括大小写、特殊符号、空格,否则会抛出找不到按钮的异常
  • 点击按钮后如需处理回调结果,可监听events.CallbackQuery事件捕获返回数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:18:02