Как узнать id канала в телеграмм
Бот отправляет сообщение написавшему пользователю:
bot.send_message(message.chat.id, 'hey user')
Эта функция прекрасно работает при личной переписке с ботом. Бота добавил в свой канал, сделал админом. На сообщения не реагирует. Как сделать, чтобы бот отвечал в других каналах? или как узнать id этих самых каналов?
Ответы (2 шт):
Если вы используете pyTelegramBotAPI, можно воспользоваться отладкой:
import logging
logger = telebot.logger
telebot.logger.setLevel(logging.DEBUG)
- добавьте бота в канал
- назначьте его администратором
- отправьте в канал сообщение, например
/start
в консоли вы должны увидеть примерно следующее:
2020-05-04 20:57:03,847 (apihelper.py:55 PollingThread) DEBUG - TeleBot: "The server returned: 'b'{"ok":true,"result":[{"update_id":661653078,\n"channel_post":{"message_id":4276,"chat":{"id":-100...413,"title":"%name channel%","type":"channel"},"date":1588615023,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}}]}''"
где id: -100...413 и есть id канала
для того чтобы реагировать на посты из каналов используйте @bot.channel_post_handler()
пример:
@bot.channel_post_handler()
def channel(message):
if message.chat.id == %ваш id канала%: # если бот в нескольких каналах, можно разделять действия по id
bot.send_message(message.chat.id, 'ответ на пост в канале')