Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код для бота в тг.

Александр Митякин Ученик (219), на голосовании 1 день назад
Я сделал бота что бы он у меня работал и писал в моем тг канале под постами доп информацию. Но у меня не получается его исправить что бы он видел эти посты в чате где должны на них отвечать. Я попытался сделать так что бы бот отвечал на закреплённые сообщения только, ведь когда выходит пост это сообщение закрепляется в чате, но и это у меня не получается почему то. Вот весь мой код. Пожалуйста, помогите мне сделать фильтрацию так, что бы бот отвечал только на СООБЩЕНИЯ КАНАЛА, а не на все сообщения.
from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes
import asyncio

TOKEN = 'токен бота'

# Функция-фильтр для проверки, что сообщение закреплено
def pinned_message_filter(message):
return message.pinned_message is not None

# Создаем фильтр для обработки только закреплённых сообщений
custom_filter = filters.ChatType.GROUPS & filters.MessageFilter(pinned_message_filter)

async def handle_pinned_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Это закреплённое сообщение!")

async def main():
application = ApplicationBuilder().token(TOKEN).build()

# Использование пользовательского фильтра для обработки закреплённых сообщений
application.add_handler(MessageHandler(custom_filter, handle_pinned_message))

# Запуск бота с polling
await application.initialize()
await application.start()
await application.updater.start_polling()

if __name__ == '__main__':
# Создаем новый цикл событий
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)

try:
loop.run_until_complete(main()) # Запускаем основную функцию в цикле
finally:
loop.close() # Закр
ываем цикл событий после завершения
Похожие вопросы