MrFerrum
@MrFerrum
школьник который программирует

Функция с двумя ифами как реализовать PyTelegramBotAPI 4.14.0?

хотел функцию которая в зависимости от команды выводила бы разный результат вот сам код:
@bot.message_handler(commands=['мне грустно', 'мне весело'])
def pomosh(message):
    if message=='мне грустно':
        bot.reply_to(message, 'не грусти( я с тобой)!')
    if message=='мне весело':
        bot.reply_to(message, 'мне тоже!)')
bot.infinity_polling()

не он не реагирует, как исправить? Нужны уточнения, напишу что смогу
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix
yellow
Параметр commands используется для создания команд, не для реагирования на текст. К тому же в командах не должен содержаться пробел.

Тогда уж что нибудь в духе
@bot.message_handler(func=lambda message: message.text and message.text in ['мне грустно', 'мне весело'])
Ответ написан
Комментировать
@codingoleg
Команду из 2 слов Telebot через commands не поймет. Нужны будут регулярные выражения, но, кажется, это вам еще рано. Вот рабочий вариант:
@bot.message_handler(commands=['грустно', 'весело'])
def pomosh(message):
    if message.text == '/грустно':
        bot.reply_to(message, 'не грусти( я с тобой)!')
    elif message.text == '/весело':
        bot.reply_to(message, 'мне тоже!)')

bot.infinity_polling()

Вызов команды через /грустно или /весело. Но лучше разносить их по разным хендлерам:
@bot.message_handler(commands=['грустно'])
def sad(message):
    bot.reply_to(message, 'не грусти( я с тобой)!')

@bot.message_handler(commands=['весело'])
def fun(message):
    bot.reply_to(message, 'мне тоже!)')

bot.infinity_polling()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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