Для удаления последнего поста в Телеграм канале вам необходимо внести следующие изменения в код:
1. Импортируйте класс `Message` из модуля `telegram`:
```python
from telegram import Bot, Message
```
2. Вместо использования метода `fetch_all()` для получения всех сообщений канала, используйте метод `get_chat_history()`:
```python
messages = await bot.get_chat_history(chat_id).fetch_all()
```
3. Теперь при получении сообщений, вам нужно перебрать их и найти последнее:
```python
if messages:
for message in messages:
# Найти последнее сообщение
last_message = message
await last_message.delete()
print(f'Успешно удалили сообщение: {last_message.text}')
else:
print('В канале нет сообщений для удаления.')
```
Обновленный код должен выглядеть следующим образом:
```python
import asyncio
from telegram import Bot, Message
from telegram.error import TelegramError
bot_token = 'token12345'
chat_id = '@username'
async def main():
bot = Bot(token=bot_token)
try:
messages = await bot.get_chat_history(chat_id).fetch_all()
if messages:
for message in messages:
last_message = message
await last_message.delete()
print(f'Успешно удалили сообщение: {last_message.text}')
else:
print('В канале нет сообщений для удаления.')
except TelegramError as e:
print(f'Произошла ошибка: {e}')
if __name__ == '__main__':
asyncio.run(main())
```
Пожалуйста, попробуйте внести эти изменения в свой код и проверьте его работоспособность.