Найдите идентификатор чата в python-telegram-боте

#python #telegram #telegram-bot #python-telegram-bot

Вопрос:

Я попытался создать бота в telegram с помощью python, бота я не могу найти chat_id . Что мне делать?

Мой код:

 from telegram.ext import Updater, CommandHandler
from telegram import ReplyKeyboardMarkup

updater = Updater(Token)
def start(update, _) :
    update.message.reply_text('Hello {}'.format(update.message.chat.first_name))

def service_keyboards(bot,update) :
    chat_id = update.message.chat_id
    keyboard = [['Send Video'], ['Send Music']]
    bot.sendMessage(chat_id, 'Plese choose an item.', reply_markup = ReplyKeyboardMarkup(keyboard))

start_command = CommandHandler('start' , start)
service_command = CommandHandler('service' , service_keyboards)
updater.dispatcher.add_handler(start_command)
updater.dispatcher.add_handler(service_command)
updater.start_polling()
updater.idle()
 

Эро:

Обработчики ошибок не регистрируются, исключение регистрации. Обратная связь (последний последний вызов): Файл «c:usersGhazalappdatalocalprogramspythonpython38libsite-packagestelegramextdispatcher.py», строка 442, в обработчике process_update.handle_update(обновление, самостоятельная проверка, контекст) Файл «c:usersGhazalappdatalocalprogramspythonpython38libsite-packagestelegramexthandler.py», строка 160, в файле handle_update возвращает self.callback(обновление, контекст)»», строка 9, в файле start chat_id = update.message.ошибка атрибута chat_id: объект CallbackContext не имеет атрибута «сообщение»

Ответ №1:

Функции обработчика команд (в вашем случае start функция) принимают два аргумента: первый — это Update , второй — это CallbackContext .

Вы неправильно разместили аргумент update в функции. Это должно быть на первом месте:

 def echo(update: Update, _: CallbackContext) -> None:
    """Echo the user message."""
    update.message.reply_text(str(update.message.chat_id)   ": "   
update.message.text)
 

Ваше сообщение об ошибке явно указывает на то, что вы пытаетесь получить доступ к атрибуту сообщения CollbackContex. И в CallbackContext этого нет.

Пожалуйста, обратитесь к этим примерам, чтобы узнать больше о библиотеке telegram-ботов на python.

Комментарии:

1. Спасибо, но мне нужно chat_id для другого метода. Теперь я отредактировал свой код. пожалуйста, прочтите мой код еще раз. Я запускаю треску и снова получаю эти ошибки.

2. Это не имеет значения. Вы просто меняете порядок аргументов своих функций с service_keyboards(bot,update) на service_keyboards(update, bot)