Чтобы использовать функцию асинхронной проверки с wait_forв discord.py, вы можете определить асинхронную функцию-предикат, которая проверяет желаемое условие. Вот пример:
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.typing = False
intents.presences = False
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print(f'Logged in as {bot.user.name}')
@bot.command()
async def wait(ctx):
def check(message):
return message.author == ctx.author and message.channel == ctx.channel
try:
message = await bot.wait_for('message', check=check, timeout=60)
await ctx.send(f'You said: {message.content}')
except asyncio.TimeoutError:
await ctx.send('You took too long to respond.')
bot.run('YOUR_BOT_TOKEN')
В приведенном выше коде команда waitожидает сообщения от того же автора в том же канале. Функция checkопределяется с нужным условием, и wait_forиспользует ее для фильтрации сообщений. Если условие не выполняется в течение указанного времени ожидания (в данном случае 60 секунд), возникает ошибка TimeoutError.