Задать вопрос
@Hin9

Как добавить кнопку к пересылаемому сообщению?

Скрипт от моего имени пересылает в мою же группу посты. Необходимо сделать так, чтобы при пересылке сообщения в мою группу добавлялась кнопка, которая выполняла команды. Такой код не работает, причину выяснить не удалось

from telethon import TelegramClient, events, Button
import re

# Создаем клиент
client = TelegramClient('TestRSL', api_id, api_hash)


# Обработчик новых сообщений
@client.on(events.NewMessage(chats=('t.me/hinyatest3',...)))
async def handler(event):
    if event.message.message is not None:
        if '100%' in event.message.message or re.search(r'(^|[^0-9])\s*?(%)', event.message.message) \
                or re.search('бесплатно', event.message.message, re.IGNORECASE) \
                or re.search(r'(^|[^0-9])0\s*?(руб|р|₽|рублей)', event.message.message, re.IGNORECASE):

            # Извлечение ника продавца
            seller_nick = re.search(r'@\w+', event.message.message)
            if seller_nick:
                seller_nick = seller_nick.group(0)  # Получаем ник в формате @username

                # Создаем кнопку для проверки продавца
                button = Button.inline('Проверить продавца')

                # Пересылаем сообщение с кнопкой
                await client.send_message('t.me...',
                                          event.message,
                                          buttons=[[button]])
                await client.send_message("Нажмите на кнопку 'Проверить продавца'",
                                          buttons=[[button]])


@client.on(events.CallbackQuery)
async def callback_handler(event):
    seller_nick = event.data.decode('utf-8')  # Декодируем данные кнопки

    # Здесь выполняется поиск в других группах
    # Например, отправляем сообщения в заданные группы для проверки наличия информации о продавце
    search_results = []

    # Добавьте вашу логику поиска здесь...
    groups_to_check = [-1002149947645, -1001256835241]  # Определите группы для поиска
    for group in groups_to_check:
        async for message in client.iter_messages(group, limit=50):
            if seller_nick in message.message:
                search_results.append(f"Найден в {group}: {message.message}")

    # Отправка результатов пользователю
    if search_results:
        await event.respond('\n'.join(search_results))
    else:
        await event.respond("Информация о продавце не найдена.")

    # Удалить сообщение через X времени
    await event.delete(10)


# Запуск клиента
with client:
    client.run_until_disconnected()
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nozzy
Symfony, Laravel, SQL, Python, Telegram
Сообщение пересылается так:
client.forward_messages(chat_id, from_chat_id, message_ids)

То что ты делаешь, это копирование текста сообщения.
Но кнопку добавить не получится, так как для этого, тебе нужно залогиниться как бот.
Ты же, судя по коду, залогинился в Telethon, как юзер.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы