Как узнать id канала в телеграмм

Бот отправляет сообщение написавшему пользователю:

bot.send_message(message.chat.id, 'hey user')

Эта функция прекрасно работает при личной переписке с ботом. Бота добавил в свой канал, сделал админом. На сообщения не реагирует. Как сделать, чтобы бот отвечал в других каналах? или как узнать id этих самых каналов?


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

Автор решения: D. Violet

Если вы используете 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 канала

→ Ссылка
Автор решения: D. Violet

для того чтобы реагировать на посты из каналов используйте @bot.channel_post_handler()

пример:

@bot.channel_post_handler()
def channel(message):
    if message.chat.id == %ваш id канала%:  # если бот в нескольких каналах, можно разделять действия по id
        bot.send_message(message.chat.id, 'ответ на пост в канале')
→ Ссылка