Ошибка: Бот запущен. Ожидание новых сообщений... Найдена кнопка '' в сообщении, нажимаю... Unhandled exception on handler Traceback (most recent call last): File "/root/venv/lib/python3.12/site-packages/telethon/client/updates.py", line 570, in _dispatch_update await callback(event) File "/root/майнг/bot.py", line 39, in handler await process_message(event) File "/root/майнг/bot.py", line 29, in process_message reply_to=InputReplyToMessage(id=message.id), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: InputReplyToMessage.__init__() got an unexpected keyword argument 'id' Код: import asyncio from telethon import TelegramClient, events from telethon.tl.types import KeyboardButtonCallback, ReplyInlineMarkup, InputReplyToMessage from telethon.tl import functions # Замените на свои значения api_id = api_hash = '' bot_token = '' channel_id = -1002359327215 target_text = "Для начисления нажмите на кнопку:" target_button_text = "" client = TelegramClient('anon', api_id, api_hash).start(bot_token=bot_token) async def process_message(event): message = event.message if target_text in message.text: if message.reply_markup and message.reply_markup.rows: for row_index, row in enumerate(message.reply_markup.rows): for button_index, button in enumerate(row.buttons): if isinstance(button, KeyboardButtonCallback) and button.text == target_button_text: print(f"Найдена кнопка '{target_button_text}' в сообщении, нажимаю...") await client( functions.messages.SendMessageRequest( peer=message.peer_id, message=target_button_text, reply_to=InputReplyToMessage(id=message.id), reply_markup=ReplyInlineMarkup(rows=[[KeyboardButtonCallback(text=target_button_text, data=button.data)]]) ) ) print("Кнопка нажата.") return print(f"Сообщение '{target_text}' найдено, но кнопка '{target_button_text}' не найдена.") @client.on(events.NewMessage(chats=[channel_id])) async def handler(event): await process_message(event) async def main(): print("Бот запущен. Ожидание новых сообщений...") await client.run_until_disconnected() if __name__ == '__main__': client.loop.run_until_complete(main()) Python import asyncio from telethon import TelegramClient, events from telethon.tl.types import KeyboardButtonCallback, ReplyInlineMarkup, InputReplyToMessage from telethon.tl import functions # Замените на свои значения api_id = api_hash = '' bot_token = '' channel_id = -1002359327215 target_text = "Для начисления нажмите на кнопку:" target_button_text = "" client = TelegramClient('anon', api_id, api_hash).start(bot_token=bot_token) async def process_message(event): message = event.message if target_text in message.text: if message.reply_markup and message.reply_markup.rows: for row_index, row in enumerate(message.reply_markup.rows): for button_index, button in enumerate(row.buttons): if isinstance(button, KeyboardButtonCallback) and button.text == target_button_text: print(f"Найдена кнопка '{target_button_text}' в сообщении, нажимаю...") await client( functions.messages.SendMessageRequest( peer=message.peer_id, message=target_button_text, reply_to=InputReplyToMessage(id=message.id), reply_markup=ReplyInlineMarkup(rows=[[KeyboardButtonCallback(text=target_button_text, data=button.data)]]) ) ) print("Кнопка нажата.") return print(f"Сообщение '{target_text}' найдено, но кнопка '{target_button_text}' не найдена.") @client.on(events.NewMessage(chats=[channel_id])) async def handler(event): await process_message(event) async def main(): print("Бот запущен. Ожидание новых сообщений...") await client.run_until_disconnected() if __name__ == '__main__': client.loop.run_until_complete(main())
disa, похоже, что проблема связана с использованием неправильного аргумента в функции `InputReplyToMessage`. Ошибка говорит о том, что `InputReplyToMessage.__init__()` не ожидает аргумент с именем `id`. Вместо этого, попробуй использовать `reply_to_msg_id` для указания идентификатора сообщения, на которое ты хочешь ответить. Вот пример, как это может выглядеть: reply_to=InputReplyToMessage(reply_to_msg_id=message.id) Python reply_to=InputReplyToMessage(reply_to_msg_id=message.id) Попробуй заменить эту строку в твоем коде и проверь, исчезнет ли ошибка. Если будут еще вопросы или проблемы, дай знать!
Первую проблему, я так понял, ты решил, вот решение второй Проблема в том, как формируется reply_markup . В текущем коде создается неправильная структура для кнопок. Нужно использовать KeyboardButtonRow для создания строк кнопок. Вот исправленный код: from telethon.tl.types import ( KeyboardButtonCallback, ReplyInlineMarkup, InputReplyToMessage, KeyboardButtonRow ) async def process_message(event): message = event.message if target_text in message.text: if message.reply_markup and message.reply_markup.rows: for row_index, row in enumerate(message.reply_markup.rows): for button_index, button in enumerate(row.buttons): if isinstance(button, KeyboardButtonCallback) and button.text == target_button_text: print(f"Найдена кнопка '{target_button_text}' в сообщении, нажимаю...") # Создаем правильную структуру кнопок button_row = KeyboardButtonRow([ KeyboardButtonCallback(text=target_button_text, data=button.data) ]) await client( functions.messages.SendMessageRequest( peer=message.peer_id, message=target_button_text, reply_to=InputReplyToMessage(reply_to_msg_id=message.id), reply_markup=ReplyInlineMarkup(rows=[button_row]) # Используем структуру с KeyboardButtonRow ) ) print("Кнопка нажата.") return print(f"Сообщение '{target_text}' найдено, но кнопка '{target_button_text}' не найдена.") Python from telethon.tl.types import ( KeyboardButtonCallback, ReplyInlineMarkup, InputReplyToMessage, KeyboardButtonRow ) async def process_message(event): message = event.message if target_text in message.text: if message.reply_markup and message.reply_markup.rows: for row_index, row in enumerate(message.reply_markup.rows): for button_index, button in enumerate(row.buttons): if isinstance(button, KeyboardButtonCallback) and button.text == target_button_text: print(f"Найдена кнопка '{target_button_text}' в сообщении, нажимаю...") # Создаем правильную структуру кнопок button_row = KeyboardButtonRow([ KeyboardButtonCallback(text=target_button_text, data=button.data) ]) await client( functions.messages.SendMessageRequest( peer=message.peer_id, message=target_button_text, reply_to=InputReplyToMessage(reply_to_msg_id=message.id), reply_markup=ReplyInlineMarkup(rows=[button_row]) # Используем структуру с KeyboardButtonRow ) ) print("Кнопка нажата.") return print(f"Сообщение '{target_text}' найдено, но кнопка '{target_button_text}' не найдена.") Основные изменения: 1. Добавлен импорт KeyboardButtonRow 2. Создается правильная структура кнопок с использованием KeyboardButtonRow 3. Кнопки группируются в строку перед добавлением в ReplyInlineMarkup Это должно исправить ошибку TypeError, связанную с неправильной структурой объекта TL.