Игра угадай число для бота / Telegram, Python
У меня есть главный файл бота main.py, я импортировал файл games.py в main.py и собираюсь вызывать игру через функцию, но мне надо чтоб весь текст который в коде выводил бот сообщением, и на текст который ему отправишь он отвечал - угадал число, меньше или больше оно.
Я новичок и код не работает, пишет ошибку при запуске TypeError мол я в условной конструкции сравниваю str и int, помогите исправить чтоб код работал, можете доработать чтоб если пользователь вводил текст бот отвечал что это не число.
Вот код игры:
import random
def random_guesses(message):
guesses_made = 0
name = str(message.chat.first_name) + " " + str(message.chat.last_name)
number = random.randint(1, 30)
bot.send_message(message.chat.id, '{0}, я загадал число между 1 и 30. Сможешь угадать?'.format(name))
while guesses_made < 6:
bot.send_message(message.chat.id, "Введите число")
guess = int(message.text)
guesses_made += 1
if guess < number:
bot.send_message(message.chat.id, 'Твое число меньше того, что я загадал.')
if guess > number:
bot.send_message(message.chat.id, 'Твое число больше загаданного мной.')
if guess == number:
bot.send_message(message.chat.id, 'Ух ты, {0}! Ты угадал мое число, использовав {1} попыток!'.format(name, guesses_made))
else:
bot.send_message(message.chat.id, 'А вот и не угадал! Я загадал число {0}'.format(number))
А вот код вызова этой функции в файле main.py:
import telebot
import config
import conf_games
import time
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(content_types=['text'])
def get_message(message):
if message.text.lower() == 'привет':
bot.send_message(message.chat.id, 'хай')
elif message.text.lower() == 'угадай число':
bot.send_message(message.chat.id, conf_games.random_guesses(message))
Ответы (1 шт):
Автор решения: Serg Bocharov
→ Ссылка
Как-то так:
while guesses_made < 6:
bot.send_message(message.chat.id, "Введите число")
if message.text.isdigit():
guess = int(message.text)
else:
bot.send_message(message.chat.id, "Неверный ввод. Введите число")
UPDATE. Измените проверку. Проверяйте через исключение это будет правильнее:
while guesses_made < 6:
bot.send_message(message.chat.id, "Введите число")
try:
guess = int(message.text)
except ValueError:
bot.send_message(message.chat.id, "Неверный ввод. Введите число")
else:
guesses_made += 1
if guess < number:
bot.send_message(message.chat.id, 'Твое число меньше того, что я загадал.')
if guess > number:
bot.send_message(message.chat.id, 'Твое число больше загаданного мной.')
if guess == number:
bot.send_message(message.chat.id,
'Ух ты, {0}! Ты угадал мое число, использовав {1} попыток!'.format(name, guesses_made))
else:
bot.send_message(message.chat.id, 'А вот и не угадал! Я загадал число {0}'.format(number))