Как заменить часть сообщения в боте, написанном на Telethon

Рейтинг: 0Ответов: 1Опубликовано: 13.02.2023

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

from telethon import TelegramClient, events

api_id = '-------'

api_hash = '-------'
client = TelegramClient('--', api_id, api_hash)
client.start()
@client.on(events.NewMessage(id канала 1))#ТЕСТ 1    
async def main(event):
     await client.send_message(id канала 2, event.message)
     
client.run_until_disconnected()

Ответы

▲ 0Принят

Для этого вам нужно разделить event.message на строки, а затем удалить последнюю строку или заменить её, в зависимости от того, что вам нужно.

from telethon import TelegramClient, events

api_id = '-------'

api_hash = '-------'
client = TelegramClient('--', api_id, api_hash)
client.start()
@client.on(events.NewMessage(id канала 1))#ТЕСТ 1    
async def main(event):
     text = event.message.message.split('\n')  # разделяет сообщение на строки
     text = text[:-1]  # удаляет последнюю строку
     text[-1] = 'что-то другое'  # заменяет текст последней строки на что-то другое
     text = '\n'.join(text)

     await client.send_message(id канала 2, text)
     
client.run_until_disconnected()

Похоже, есть пробелы в понимании, как работают строки. Думаю, вам стоит поискать и почитать гайды по ним. Например, вот этот.