JiMoon
@JiMoon
меня тут ненавидят, потому что я говнокодер.

AttributeError: module 'telebot.types' has no attribute 'ReplyKeyboardRemove'?

У меня появилась ошибка, когда я запускаю своего бота на Python. установлен pyTelegramBotAPI 4.4.0, импортирую telebot. также импортирую from telebot.types import ReplyKeyboardRemove. Python 3.9. Помогите пожалуйста. Код:
from telebot.types import ReplyKeyboardRemove

bot = telebot.TeleBot('token')

@bot.message_handler(commands=["start"])
def start(m, res = False):
    markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = telebot.types.KeyboardButton("Я в кофейне!")
    item2 = telebot.types.KeyboardButton("Я дома...")
    markup.add(item1)
    markup.add(item2)
    bot.send_message(m.chat.id, 'Привет!\nЭто онлайн официант кофейни PRIMETIME!\nПожалуйста, выбери где ты сейчас.',  reply_markup=markup)

@bot.message_handler(content_types=["text"])
def handle_text(message):
    if message.text.strip() == 'Я в кофейне!':
        a = ReplyKeyboardRemove()
        msg = bot.send_message(message.chat.id, 'Отлично! Ты сейчас в кофейне!\nЗначит тебе будет легче делать заказ!', reply_markup=a)
        bot.register_next_step_handler(msg, handle_text_2(msg))
        print('Человек в кофейне')

    elif message.text.strip() == 'Я дома...':
        bot.send_message(message.chat.id, "bebroit")

@bot.message_handler(content_types=["text"])
def handle_text_2(message):
    a = 'a'
    if a == 'a':
        global krasnoobsk_text
        global ord30_text
        global kir23_text
        global mar39_text
        global ger64_text
        global ord18_text
        global nik1_text
        global mar7_text
        global sov8_text
        global kosh33_text
        global bolsh45_1_text
        global kras157_1_text
        global kras2_1_text
        global vist38_1_text
        global voen5_text
        global dus179_5_text
        global bog27_text
        global frun242_text
        global maks53_text
        global dus28d_text
        global kras101_text
        global svet50_text
        krasnoobsk_text = "6-й микрорайон, 1 (Краснообск)"
        ord30_text = "Орджоникидзе, 30"
        kir23_text = "Кирова, 23"
        mar39_text = "проспект Карла Маркса, 29"
        ger64_text = "Героев Революции, 64"
        ord18_text = "Орджоникидзе, 18"
        nik1_text = "Никольский проспект, 1 (БЦ Кольцово)"
        mar7_text = "площадь Карла Маркса, 7 (Сан Сити)"
        sov8_text = "Советская, 8"
        kosh33_text = "Кошурникова, 33"
        bolsh45_1_text = "Большевистская, 45/1 (РЕКА)"
        kras157_1_text = "Красный проспект, 157/1"
        kras2_1_text = "Красный проспект, 2/1"
        vist38_1_text = "Выставочная, 38/1"
        voen5_text = "Военная, 5 (Аура)"
        dus179_5_text = "Дуси Ковальчук, 179/5 (БЦ Колибри)"
        bog27_text = "Богдана Хмельницкого, 27"
        frun242_text = "Фрунзе, 242 (ДЦ Новая высота)"
        maks53_text = "Максима Горького, 53"
        dus28d_text = "Дуси Ковальчук, 28д"
        kras101_text = "Красный проспект, 101 (Ройял Парк)"
        svet50_text = "Светлановская, 50 (Большая Медведица)"
        global markup
        markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
        krasnoobsk = telebot.types.KeyboardButton("6-й микрорайон, 1 (Краснообск)")
        ord30 = telebot.types.KeyboardButton("Орджоникидзе, 30")
        kir23 = telebot.types.KeyboardButton("Кирова, 23")
        mar39 = telebot.types.KeyboardButton("проспект Карла Маркса, 39")
        ger64 = telebot.types.KeyboardButton("Героев Революции, 64")
        ord18 = telebot.types.KeyboardButton("Орджоникидзе, 18")
        nik1 = telebot.types.KeyboardButton("Никольский проспект, 1 (БЦ Кольцово)")
        mar7 = telebot.types.KeyboardButton("площадь Карла Маркса, 7 (Сан Сити)")
        sov8 = telebot.types.KeyboardButton("Советская, 8")
        kosh33 = telebot.types.KeyboardButton("Кошурникова, 33")
        bolsh45_1 = telebot.types.KeyboardButton("Большевистская, 45/1 (РЕКА)")
        kras157_1 = telebot.types.KeyboardButton("Красный проспект, 157/1")
        kras2_1 = telebot.types.KeyboardButton("Красный проспект, 2/1")
        vist38_1 = telebot.types.KeyboardButton("Выставочная, 38/1")
        voen5 = telebot.types.KeyboardButton("Военная, 5 (Аура)")
        dus179_5 = telebot.types.KeyboardButton("Дуси Ковальчук, 179/5 (БЦ Колибри)")
        bog27 = telebot.types.KeyboardButton("Богдана Хмельницкого, 27")
        frun242 = telebot.types.KeyboardButton("Фрунзе, 242 (ДЦ Новая высота)")
        maks53 = telebot.types.KeyboardButton("Максима Горького, 53")
        dus28d = telebot.types.KeyboardButton("Дуси Ковальчук, 28д")
        kras101 = telebot.types.KeyboardButton("Красный проспект, 101 (Ройял Парк)")
        svet50 = telebot.types.KeyboardButton("Светлановская, 50 (Большая Медведица)")
        markup.add(krasnoobsk)
        markup.add(ord30)
        markup.add(kir23)
        markup.add(mar39)
        markup.add(ger64)
        markup.add(ord18)
        markup.add(nik1)
        markup.add(mar7)
        markup.add(sov8)
        markup.add(kosh33)
        markup.add(bolsh45_1)
        markup.add(kras157_1)
        markup.add(kras2_1)
        markup.add(vist38_1)
        markup.add(voen5)
        markup.add(dus179_5)
        markup.add(bog27)
        markup.add(frun242)
        markup.add(maks53)
        markup.add(dus28d)
        markup.add(kras101)
        markup.add(svet50)
        print('Кнопки добавлены!')
        bot.send_message(message.chat.id, 'Пожалуйста, выбери кофейню, в которой ты сейчас находишься.', reply_markup=markup)
        aboba = 'a'
        if aboba:
            print('pizda')
            if message.text.strip() == krasnoobsk_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {krasnoobsk_text}")

            elif message.text.strip() == ord30_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {ord30_text}")

            elif message.text.strip() == kir23_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {kir23_text}")

            elif message.text.strip() == mar39_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {mar39_text}")

            elif message.text.strip() == ger64_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {ger64_text}")

            elif message.text.strip() == ord18_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {ord18_text}")

            elif message.text == nik1_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {nik1_text}")

            elif message.text == mar7_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {mar7_text}")

            elif message.text == sov8_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {sov8_text}")

            elif message.text == kosh33_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {kosh33_text}")

            elif message.text == bolsh45_1_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {bolsh45_1_text}")

            elif message.text == kras157_1_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {kras157_1_text}")

            elif message.text == vist38_1_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {vist38_1_text}")

            elif message.text == kras2_1_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {kras2_1_text}")

            elif message.text == voen5_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {voen5_text}")

            elif message.text == dus179_5_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {dus179_5_text}")

            elif message.text == bog27_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {bog27_text}")

            elif message.text == frun242_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {frun242_text}")

            elif message.text == maks53_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {maks53_text}")

            elif message.text == dus28d_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {dus28d_text}")

            elif message.text == kras101_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {kras101_text}")

            elif message.text == svet50_text:
                bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {svet50_text}")

            else:
                print('че?')


bot.polling(none_stop=True)
  • Вопрос задан
  • 824 просмотра
Пригласить эксперта
Ответы на вопрос 2
@twistfire92
Python backend developer
Слушай, даже как-то жалко тебя стало с таким кодом то.

Объяви глобальную переменную, например places, положи туда список всех адресов. (Для чего - узнаешь ниже)
places = ["6-й микрорайон, 1 (Краснообск)", "Орджоникидзе, 30", "Кирова, 23",
			"проспект Карла Маркса, 29", "Героев Революции, 64", "Орджоникидзе, 18",
			"Никольский проспект, 1 (БЦ Кольцово)", "площадь Карла Маркса, 7 (Сан Сити)",
			"Советская, 8", "Кошурникова, 33", "Большевистская, 45/1 (РЕКА)",
			"Красный проспект, 157/1", "Красный проспект, 2/1", "Выставочная, 38/1",
			"Военная, 5 (Аура)", "Дуси Ковальчук, 179/5 (БЦ Колибри)", "Богдана Хмельницкого, 27",
			"Фрунзе, 242 (ДЦ Новая высота)", "Максима Горького, 53", "Дуси Ковальчук, 28д",
			"Красный проспект, 101 (Ройял Парк)", "Светлановская, 50 (Большая Медведица)"]


Не надо использовать global!!! Сначала почитай что это и для чего. Тут оно вообще не нужно.

Вот такое вообще не показывай на людях!
a = 'a'
    if a == 'a':
    ...


А вместо этой адской вереницы с объявлением переменных под каждую кнопку сделай так:
markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
for place in places: # вот и пригодилась наша глобальная переменная (и без всяких global)
    markup.add(telebot.types.KeyboardButton(place))
print('Кнопки добавлены!') # если тебе вообще это нужно
bot.send_message(message.chat.id, 'Пожалуйста, выбери кофейню, в которой ты сейчас находишься.', reply_markup=markup)


Далее. После абобы. такое тоже на людях не показывай.
Кучу if elif elif elif.... заменяй на:
if message.text.strip() in places: # Оп! Опять пригодилось!
    bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {message.text.strip()}")


По твоему же вопросу. Зачем отдельно импортируешь ReplyKeyboardRemove?
msg = bot.send_message(message.chat.id, 'Отлично! Ты сейчас в кофейне!\nЗначит тебе будет легче делать заказ!', reply_markup=telebot.types.ReplyKeyboardRemove())


Ну и там еще наберется несколько прям жирных косяков.
Ответ написан
JiMoon
@JiMoon Автор вопроса
меня тут ненавидят, потому что я говнокодер.
ВОПРОС ЗАКРЫТ! Решение: попробуйте продебажить, менять местами коды, часть в другой хендлер, часть в этом же хендлере. (ну или запускайте через другое средство)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы