Как сделать генератор рандомных чисел в телеграм боте?

Пишу телеграм бота, у которого одна из функций - генерирование рандомных чисел, после ввода пользователем количества этих самых чисел, числа с которого начинается диапазон генерации, и числа, на котором этот диапазон кончается. А проблема в том, что я не могу нормально сохранить вводимые пользователем числа в переменные, и засунуть их потом в цикл.


Ответы (1 шт):

Автор решения: Alioshca Z

Напрашивается что-то типо того (при условии, что числа вводятся через пробел или другой нечисловой разделитель):

import random
import re

@bot.message_handler(content_types=['text'])
def randomizer(message):
    r = re.findall(r'\d+', message.text)
    if len(r) < 2:
        print('Придумайте, что делать, если введено меньше 2 чисел')
        return
    if len(r) > 2: #обрезание до 2-х, если чисел введено больше 2
        r = r[:2]
    r_min = min([int(i) for i in r]) #если вдруг числа введены в порядке убывания
    r_max = max([int(i) for i in r])
    bot.send_message(message.chat.id, 'Ваше случайное число: {}'.format(random.randint(r_min, r_max)))

Если нужно ввести первым числом количество случайных чисел, а затем 2 числа, образующих интервал, то так:

@bot.message_handler(content_types=['text'])
def randomizer(message):
    r = re.findall(r'\d+', message.text)
    if len(r) < 1:
        print('Придумайте, что делать, если не введено чисел')
        return
    elif len(r) == 1: #если введено 1 число, то просто что-нибудь рандомим
        bot.send_message(message.chat.id, 'Ваше случайное число: {}'.format(random.randint(0, int(r[0])**2)))
    else:
        quantity = int(r[0])
        r = r[1:3]
        r_min = min([int(i) for i in r]) #если вдруг числа введены в порядке убывания
        r_max = max([int(i) for i in r])
        rand_string = [str(random.randint(r_min, r_max)) for i in range(quantity)]
        bot.send_message(message.chat.id, 'Ваши случайные числа: {}'.format(' '.join()))
→ Ссылка