Как ожидать ввода рандомного числа?

У меня есть скрипт на python, он просит ввести некое сообщение, после этого просит ввести число в диапазоне от 1 до 139, как мне получить это самое число? библиотека discord.py

        def check_two(m):
            m = m
            # return m.isdigit() and (1 <= int(m) <= 139)
            return (1 <= int(m) <= 139) 

        msg2 = await bot.wait_for('message', check=check_two)
        DataBook_Page = await channel.send('Страница'.format(msg2))
        print(DataBook_Page)



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

Автор решения: denisnumb

В функции check() первым делом проверяем, чтобы сообщение было не от бота и при этом от пользователя, вызвавшего команду.

Затем пробуем привести текст сообщения (msg.content) к типу int. В случае, если было введено не число, сработает обработчик try-except и функция продолжит дальше проверять сообщения.

Если текст сообщения удалось привести к числовому типу, то проверяем, чтобы число было в диапазоне 1 <= arg <= 139 и если это так, то возвращаем объект сообщения (msg).

import discord
from discord.ext import commands

bot = commands.Bot(command_prefix='!', intents = discord.Intents.all())

@bot.command()
async def test(ctx):
    await ctx.send('Вызвана команда `!test`, введите любое число!')

    def check(msg):
        if (msg.author == ctx.author) and (msg.author != bot.user):
            try:
                arg = int(msg.content)
                if 1 <= arg <= 139:
                    return msg
            except:
                pass

    arg = await bot.wait_for('message', check = check)
    arg = int(arg.content)
    await ctx.send(f'Ваше число: {arg}\nТип: {type(arg)}')

bot.run('TOKEN')
→ Ссылка