Stack Overflow на русском Asked on February 15, 2021
Когда пишешь Новости
, думает, что такой команды нет. Получается она выполняется и сразу же пишет:
"Я не знаю что ответить ?"
Код:
import telebot
import random
from telebot import types
bot = telebot.TeleBot("не скажу")
@bot.message_handler(commands=['start'])
def welcome(message):
# keyboard
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton("? Игры")
item2 = types.KeyboardButton("? Новости")
markup.add(item1, item2)
bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!nЯ - <b>{1.first_name}</b>, бот созданный чтобы помогать людям!".format(message.from_user, bot.get_me()),
parse_mode='html', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def lalala(message):
if message.text == '? Новости':
bot.send_message(message.chat.id, "Новостей пока нет.")
if message.text == '? Игры':
# keyboard
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton( "? Кубик")
markup.add(item1)
bot.send_message(message.chat.id, "Мои игры:".format(message.from_user, bot.get_me()), parse_mode='html', reply_markup= markup)
elif message.text == '? Кубик':
key = telebot.types.InlineKeyboardMarkup()
for el in [1,2,3,4,5,6]:
but = telebot.types.InlineKeyboardButton(text=el, callback_data=f'Число {el}')
key.add(but)
bot.send_message(message.chat.id, "Выберите число", reply_markup=key,parse_mode="Markdown")
else:
bot.send_message(message.chat.id, 'Я не знаю что ответить ?')
@bot.callback_query_handler(func=lambda call:True)
def inlin(call):
#print(call.data)
if call.data.split()[0] == 'Число':
bot.send_message(call.message.chat.id, "Кидаем кубик..." )
my_random = random.randint(1,6)
if my_random != int(call.data.split()[1]):
bot.send_message(call.message.chat.id, "Вы проиграли, выпало число " + str(my_random) + " чтобы вернуться назад напишите /start" )
else:
bot.send_message(call.message.chat.id, "Вы выиграли! чтобы вернуться назад напишите /start")
bot.edit_message_reply_markup(call.message.chat.id, call.message.message_id)
# RUN
bot.polling(none_stop=True)
У вас идёт два if
подряд: if message.text == '? Новости':
и if message.text == '? Игры':
.
Соответственно, при сообщении Новости
у вас срабатывает первое условие, и вслед за ним срабатывает else
второго, потому что бот не находит сообщение Игры
.
Чтобы такого не было, нужно:
elif message.text == '? Игры':
Correct answer by Vladislav Tikhomirov on February 15, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP