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

Как в группе Telegram ответить скриптом на сообщение пользователя, на которое я отвечал сообщением, которое как раз таки запустило скрипт (telethon)?

У меня достаточно простая задача: есть скрипт, который активируется если прописать в начале сообщения, которое я отправил в ответ на сообщение другого пользователя в группе, определённый pattern (в моём случае ".gv"). Надо, чтобы скрипт, в свою очередь, отправил другое сообщение в ответ на ТО ЖЕ СООБЩЕНИЕ, на которое я отвечал ".gv бла-бла-бла" (бла-бла-бла -- условный пример).
Я попробовал это сделать:
await event.reply("что-то")
Но это "что-то", очевидно, написалось в ответ на сообщение ".gv бла-бла-бла", а не в ответ на сообщение, НА которое я изначально отвечал сообщением ".gv бла-бла-бла".
Также, по тому, что я нашёл в интернете, я попробовал:
await client.send_message('{}'.format(sender.username), "что-то")

Но в этом случае "что-то" отправлялось уже в личные сообщения для пользователя, на сообщение которого я изначально отвечал ".gv бла-бла-бла"; Мне же надо, чтобы "что-то" отправилось в ответ на сообщение, на которое я изначально отвечал ".gv бла-бла-бла" В ГРУППЕ, а не в личных сообщениях. В интернете или в документации telethon я не нашёл, как это сделать, поэтому прошу тех, кто понял, помочь мне.

Точный код, который я пробовал:
@client.on(events.NewMessage(outgoing=True, pattern='.gv')) #give
async def handler(event : events.NewMessage.Event):
    print(event)
    msg = event.message.message
    print(msg)
    if event.is_reply:
        replied = await event.get_reply_message()
        sender = replied.sender
        split = msg.split(' ')
        tempsplit = split[1]
        tempsplit2 = tempsplit.replace('k', '000')
        print('Обычн.: ' + tempsplit2)
        gvnum = ceil(int(tempsplit2) / 0.85)
        print('/0.85: ' + str(gvnum))

        # await client.send_message('{}'.format(sender.username), 'дать ' + str(gvnum))
        await event.reply('дать ' + str(gvnum))

Объяснение: в телеграме есть бот с вымышленной валютой, и когда я хочу перевести определённое кол-во этой валюты другому человеку, я должен прописать в ответ на любое сообщение этого человека "дать <кол-во>", но делать это только в той в группе, в которой, логично, есть этот бот, поэтому присылать "дать <кол-во>" человеку в личку не вариант. Но загвоздка перевода в том, что при нём снимается комиссия 15% (например "дать 1000" передаёт всего 850 ед. валюты), поэтому я захотел написать скрипт, которое разделит "то или иное число" после ".gv" на 0.85 , чтобы узнать, какое число надо написать после "дать ", чтобы вместе с комиссией перевелось то самое "то или иное число". Также, для автоматизации, мне надо чтобы скрипт сам отправил "дать <число/0.85>" в ответ на сообщение того человека, которому нужно перевести это число, но, как я и говорил, "дать <число/0.85>" отправлялось в ответ на ".gv ...", а не (...как я говорил...) в ответ на сообщение того человека, которому нужно перевести это число.

Постарался объяснить как мог. Прошу помочь тех, кто понял.
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Redeve
Веб-макаке не хватит и 640гБ
Надо достать id сообщения из event.get_reply_message()

В client.send_message передать:
1. entity чата, где и было получено событие (event.chat)
2. message
3. полученный id в reply_to, или же просто сам Message объект replied
client.send_message(event.chat, message=..., reply_to=replied)

Или же пользоваться message>respond, где entity=event.chat уже задано телетоном. чтобы не путаться.

Всё есть в документации https://docs.telethon.dev/en/stable/modules/client...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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