#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)