Бот Telegram Python | Определить, что сообщение отправил бот

Есть сообщение с message id n. Как можно по этому message id определить, что оно написано ботом или человеком?


Ответы (2 шт):

Автор решения: Pasha Migainis

Если ты используешь aiogram, то в объекте сообщения есть атрибут from_user. Этот атрибут указывает на пользователя который отправил сообщение и у пользователя есть атрибут is_bot - это булевое значение, которое означает бот ли юзер.

if message.from_user.is_bot:
    print(f"{message.from_user.id} - {message.from_user.is_bot}")
→ Ссылка
Автор решения: PyPasha

А если не aiogram. У меня уже есть готовый метод,но он работает только тогда,когда прописываешь команду в ответ на сообщение. Есть ли вариант, что бы просто прописать команду /isbot и указать ID сообщения?

from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def check_bot_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
    if not update.message.reply_to_message:
        await update.message.reply_text("Используйте эту команду в ответ на сообщение")
        return
        
    message = update.message.reply_to_message
    is_bot = message.from_user.is_bot
    response = f"Сообщение {'от бота' if is_bot else 'не от бота'}"
    await update.message.reply_text(response)

def main():
    app = ApplicationBuilder().token("").build()
    app.add_handler(CommandHandler("isbot", check_bot_message))
    app.run_polling()

if __name__ == "__main__":
    main()
→ Ссылка