Простой чат на базе Telegram Bot'a (Python, telebot)

Необходимо реализовать следующее: пользователь пишет текстовое сообщение боту.

Его идентификатор (далее - id) сравнивается с id админа, если id не совпадает (т.е. боту пишет не админ, а простой пользователь), то сообщение отправляется админу.

Если id совпадает (т.е. боту пишет админ), то сообщение отправляется пользователю. Получается, что бот здесь - платформа для обратной связи.

Проблема: когда пишет админ - сообщение отправляется ему же (см. блок кода после else).

Сам код:


import telebot
import key 
import logging

#TOKEN
token = key.token
bot = telebot.TeleBot(token)

#DEBUG OF MESSAGES
logger = telebot.logger
telebot.logger.setLevel(logging.DEBUG)

#CHAT WHICH GET MESSAGES (ADMINS' CHATS)
admin_chat = "453081342"

#TRIGGER COMMANDS
@bot.message_handler(commands=["start"])
def handle_start(message):
    bot.send_message(message.chat.id, "Старт...")


@bot.message_handler(content_types=["text"])
def handle_text(message):
    if message.chat.id != admin_chat:
        bot.send_message(admin_chat, message.text)
    else:
        bot.send_message(message.chat.id, message.text)

if __name__ == "__main__":      
    bot.polling(none_stop=True)

Пожалуйста, предоставьте максимально простое и понятное решение. Спасибо!


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

Автор решения: Алёна

возможно, уже неактуально, но я столкнулась с похожей проблемой. Всё дело в синтаксисе:

    admin_chat = "453081342"

эту запись Python читает, как строку, и это работает здесь:

    bot.send_message(admin_chat, message.text)

но здесь ему необходимо число:

    if message.chat.id != admin_chat:

поэтому для Python message.chat.id всегда != admin_chat. Нужно просто убрать ":

    admin_chat = 453081342
→ Ссылка