@erooohaaa

Telebot owm. Бот видит только 1 команду и опирается только на нее. Есть варианты решить данную проблему?

В дальнейшем хочу задействовать owm, но не в этом суть. Бот опирается ТОЛЬКО на bot.send_message(message.chat.id, 'привет, я искусственный интеллект, напиши /button для дальнейшей моей работы') . Даже при написании команды /button он опирается только на эту функцию
код:
import telebot
bot = telebot.TeleBot("TOKEN")
from pyowm import OWM
from telebot import types
from pyowm.utils.config import get_default_config
config_dict = get_default_config()
config_dict['language'] = 'ru'
owm = OWM('API', config_dict)
mgr =  owm.weather_manager()
@bot.message_handler(content_types=['text'])
def start_message(message):
    bot.send_message(message.chat.id, 'привет, я искусственный интеллект, напиши /button  для дальнейшей моей работы')
@bot.message_handler(commands=['button'])
def button_message(message):
    markup = types.ReplyKeyboardMarkup()
    item1 = types.KeyboardButton('start')
    item2 = types.KeyboardButton('help')
    item3 = types.KeyboardButton('аккаунт ')
    markup.row(item1, item2, item3)
    bot.reply_to(message.chat.id , 'Выберите что нужно', reply_markup=markup)
@bot.message_handler(commands=['/start , /help , /аккаунт'])
def second_message(message):
    if message.text == 'help':
       bot.send_message(message.chat.id, 'Я умею предсказывать погоду на сегодняшний день, даже способен дать тебе рекомендации')
    elif message.text == 'start':
        bot.send_message(message.chat.id, 'Напиши город и я предскажу погоду на сегодня')
    elif message.text == 'аккаунт':
        bot.reply_to(message.chat.id, 'inst:   ')

bot.polling( none_stop = True)
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Знаете почему никто не хочет отвечать на ваш вопрос?
Тут несколько причин. Сперва вы запостили код без форматирования. Вы не могли не заметить этого, но надолго оставили вопрос как есть. Это выглядит как неуважение к тем, кто мог бы ответить.
Кроме того, прочитайте как вы сформулировали свой вопрос. Пришлось вникать, перечитывать текст несколько раз и и читать весь код, чтобы понять что вам надо. Неужели нельзя проще изложить?
Третья причина - это отсутствие попытки решить проблему самостоятельно. Такое ощущение, что вы, как тут кто-то предположил уже, посмотрели какой-то видос и срисовали с ютуба кусочки кода, а они сходу не заработали. К черту попытки самостоятельно разобраться, да? Зачем нам отступать немного назад и пытаться разобраться сперва с базовыми вещами и более простыми примерами, верно? Вам надо сразу продуктъ написать! Сразу готовенькое.

Давайте я вам дам, простите, непрошенный, совет как впредь решать такие проблемы.
Упрощайте. Удалите из кода всё лишнее, оставьте минимум, который должен работать и если он не работает, то вы что-то не поняли на более ранних стадиях изучения предмета. Нет смысла разбираться в сложном, когда вы еще не понимаете простого. Вы удаляете ВСЁ лишнее: лишние импорты, лишние команды, лишние хендлеры. Оставляете базовый простой пример и пробуете. Не работает? Ищете мануал по своей библиотеке и там наверняка есть в точности такой пример, ведь он максимально простой. Сравните его со своим. В чем отличие?
Думаю на этом этапе уже станет ясно.

К примеру в вашем коде видно, что срабатывает только один хендлер на любой текст, но в коде именно так все и задекларировано. Любой текст - делаем приветствие. Если сообщение обработано, библиотека не задействует прочие хендлеры, даже если они тоже подходят.

Но, повторюсь. Проблема глубже. Она не в хендлерах и не в декораторах, а в том, что надо сперва разбираться с простыми примерами, а потом переходить к более сложным. Учитесь читать документацию. Ролики в ютубе - плохой учитель. Успехов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект