我想让机器人点击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或?转到网站:
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"}'
),
]
),
]
),
答案 0 :(得分:0)
在这种情况下,您不应该使用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()
这足以单击频道中最后一条消息的第一个按钮。
答案 1 :(得分:0)
sender = await event.get_sender()
messages = await client.get_messages(sender.username)
await messages[0].click(0)
这将单击消息中的第一个按钮。您还可以点击(行,列),使用诸如click(text ='?')之类的文本,甚至直接点击数据(data = b'payload')。