Почему Telebot не видит атрибут «KeyboardButton» для запроса координат пользователя?

480 просмотра
0
0 Комментариев

Собственно код. По сценарию бот делает кнопку, по клику на которую юзер делится своими координатами.

@bot.message_handler(commands=['location']) #Запрос локации
def request_location(message):
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button_geo = types.KeyboardButton(text="Отправить местоположение", request_location=True)
    keyboard.add(button_geo)
    bot.send_message(message.chat.id, "Поделись местоположением", reply_markup=keyboard)
bot.polling()

[/apcode]

После запуска команды /location вылетает ошибка "AttributeError: 'module' object has no attribute 'KeyboardButton'", хотя в документации такой атрибут есть: Ссылка на документацию

Ошибка кроется где то в коде на месте "types.KeyboardButton".


Добавить комментарий

2 Answers

Python Опубликовано 10.12.2018
0

Подозреваю, что проблема кроется в секции с вашими импортами. Вот мой рабочий вариант:

import config
from telebot import TeleBot, types
 
bot = TeleBot(config.TELEGRAM_BOT_TOKEN)
 
@bot.message_handler(commands=['location']) #Запрос локации
def request_location(message):
    keyboard = types.ReplyKeyboardMarkup(row_width=1,      resize_keyboard=True)
    button_geo = types.KeyboardButton(text="Отправить местоположение", request_location=True)
    keyboard.add(button_geo)
    bot.send_message(message.chat.id, "Поделись местоположением", reply_markup=keyboard)
 
if __name__ == "__main__":
    bot.polling()

Добавить комментарий
0

Синтаксис был 100% правильный. Проблема была в установке пакета Pytelegrambotapi.

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

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up