Как ожидать ввода рандомного числа?
У меня есть скрипт на 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')