python - 你如何让 python 机器人点击电报机器人中的按钮
问题描述
我想让机器人点击 Telegram。问题是我对如何使用我的代码点击它感到困惑,我尝试了它但它仍然失败并且机器人没有点击,应该发布哪些数据以便机器人点击电报机器人。我需要你的帮助。这是我的源代码:
from telethon import TelegramClient, events, sync
from telethon.tl.functions.messages import GetHistoryRequest, GetBotCallbackAnswerRequest
api_id = 974119
api_hash = 'a483ea002564cdaa0499a08126abe4a3'
client = TelegramClient('session_name', api_id, api_hash)
client.start()
channel_username = 'GOOGLE'
channel_entity = client.get_entity(channel_username)
posts = client(GetHistoryRequest(
peer=channel_entity,
limit=1,
offset_date=None,
offset_id=0,
max_id=0,
min_id=0,
add_offset=0,
hash=0))
messageId = posts.messages[0].id
client(GetBotCallbackAnswerRequest(
channel_username,
messageId,
data=posts.messages[0].reply_markup.rows[0].buttons[0]))
client.disconnect()
必须点击的按钮是 KeyboardButtonUrl 或 Go to website :
reply_markup=ReplyInlineMarkup(
rows=[
KeyboardButtonRow(
buttons=[
KeyboardButtonUrl(
text=' Go to website',
url='https://www.google.com'
),
]
),
KeyboardButtonRow(
buttons=[
KeyboardButtonCallback(
text=' Report',
data=b'{"name":"ReportClick","id":"120326622"}'
),
KeyboardButtonCallback(
text='⏩ Skip',
data=b'{"name":"SkipClick","id":"120326622"}'
),
]
),
]
),
解决方案
你不应该client.get_entity()
在这种情况下使用,没有必要。
你应该使用client.get_messages()
,而不是GetHistoryRequest
。
你应该使用message.click()
,而不是GetBotCallbackAnswerRequest
。
所以你的代码是:
from telethon import TelegramClient, sync
api_id = ...
api_hash = ...
client = TelegramClient('session_name', api_id, api_hash)
messages = client.get_messages('GOOGLE')
messages[0].click()
这应该足以单击频道中最后一条消息的第一个按钮。
推荐阅读
- javascript - Kendo ASP.net MVC 网格编辑器弹出窗口不起作用
- sql - 如果表数据不为空,则创建表数据
- c++ - 如何将名称中带有点的键添加到 json 文件中
- visual-studio-code - 引号在 Pylance 中触发 Intellisense
- php - 遍历一个关联数组后跟一个字符串模式?
- caddy - Caddyv2 Caddyfile TLS 配置
- soap - openapi oneOf 的 WSDL 等效项是什么?
- string - 如何防止 Google Apps 脚本将现有字符串(日期、持续时间等)更改为 Google 表格中的时间戳
- r - 为什么尝试在 Linux 上运行 R 脚本时出现 exec 格式错误?
- asp.net - ValidationExpression (asp.net RegularExpressionValidator) 不允许重复数字