Задать вопрос
@nottodaygc

Не понимаю как указать именно значение из словаря в боте?

Я новичок в IT и только учусь и практикуюсь!

Есть код бота:
import telebot
from telebot import types
from config import TOKEN
import random


bot = telebot.TeleBot(TOKEN)

countries_easy = {
	"Россия": "Москва",
	"Франция": "Париж",
	"Арабские Эмираты": "Абу-Даби",
	}

@bot.message_handler(commands=['start'])
def start_messages(message):
    bot.send_message(message.chat.id, 'Привет! Я бот-игра в столицы! Для начала игры введи /play')

@bot.message_handler(commands=['play'])
def play_message(message):
    bot.send_message(message.chat.id, 'Выбирай сложность игры!')
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn1 = types.KeyboardButton("Easy")
    btn2 = types.KeyboardButton("Medium")
    btn3 = types.KeyboardButton("High")
    markup.add(btn1, btn2,btn3)
    bot.send_message(message.chat.id,text="Нажимай на кнопку для выбора сложности:".format(message.from_user), reply_markup=markup)

@bot.message_handler(content_types=["text"])
def easy(message):
	country = random.choice(list(countries_easy.items()))
	msg = bot.send_message(message.chat.id, country)
	bot.register_next_step_handler(msg, easy_game,countries_easy.values)

def easy_game(message, right_answer):
    if message.text == countries_easy.values():
        bot.send_message(message.chat.id, "Правильный ответ!")
    else:
        bot.send_message(message.chat.id, "Неправильный ответ")


if __name__ == '__main__':
    bot.polling(none_stop=True)


Это бот-игра в столицы стран. Суть в том что бот отправляет пользователю страну, а он должен назвать столицу.
Решил делать через словари(подсказали) где ключ = страна, а значение = столица.
66a8188be98e7592991106.png

Что сделать и поменять?
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Wispik
@Wispik
1. if message.text == countries_easy.values():
здесь ты сравниваешь строку со списком, поэтому при сравнении тут всегда будет ложь

2. в bot.register_next_step_handler нужно передать правильный ответ:
bot.register_next_step_handler(msg, easy_game, country[1])


3. и дальше уже сравнивать сообщение с правильным ответом (и желательно при сравнении строки к одному регистру приводить):
if message.text.lower() == right_answer.lower():
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы