Генератор случайных чисел в телеграм боте на python
Всем привет! Я новичок в python'е, пишу чат-бота телеграм на pyTelegramBotAPI, он отвечает на разные сообщения, но я хотел бы добавить такую фичу, как генерацию случайных чисел. Может кто то скинуть код, от создания кнопки при нажатии которой бот будет задавать вопрос от какого до какого числа будет генерировать число, до самого скрипта генерации. Помогите пожалуйста)
Ответы (2 шт):
Вы можете использовать метод random.randint:
import random
random.randint(1, 10)
Где 1 это число от которого будет генерироваться, а 10 до какого будет генерироваться.
Если вас интересует что-бы пользователь сам вводил эти значения вы можете использовать register_next_step_handler
Вот весь рабочий скрипт, готовый для изучения.
import telebot
import random
from telebot import types # для создания кнопок
bot = telebot.TeleBot('TOKEN') # Token бота берётся из BotFather
# Создание кнопки после команды Start
@bot.message_handler(commands=['start'])
def welcome(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
random_sender = types.KeyboardButton("Скинь Рандомное число")
markup.add(random_sender)
bot.send_message(message.chat.id, '<b>Генератор Рандома Активирован</b> (бип-пуп-пиип)', parse_mode='html',
reply_markup=markup)
# Отслеживание нажатий кнопки
@bot.message_handler(content_types=['text'])
def first_number_step(message):
if message.text == 'Скинь Рандомное число':
msg = bot.send_message(message.chat.id, 'Введите начало диапазона')
bot.register_next_step_handler(msg, second_number_step) # переход на функцию second_number_step
else:
bot.send_message(message.chat.id, 'Такой команды нет')
# Получение первого числа диапазона
def second_number_step(message):
global NUM_first
NUM_first = int(message.text)
msg = bot.send_message(message.chat.id, 'Введите конец диапазона')
bot.register_next_step_handler(msg, result_number_step) # переход на функцию result_number_step
# Получение второго числа диапазона
def result_number_step(message):
global NUM_second
NUM_second = int(message.text)
result(message) # Вызов функции result(message)
# Вывод результата (рандом)
def result(message):
bot.send_message(message.chat.id, 'Случайное число: ' + str(random.randint(NUM_first, NUM_second)))
#Run
bot.polling(none_stop=True) # Это мы пишем для того, чтобы бот
# при работе кода работал постоянно
Рекомендую прочитать про то, как работает register_next_step_handler