Answer the question
In order to leave comments, you need to log in
Answer the question
In order to leave comments, you need to log in
Two options:
1. As suggested by Alexander, use command parameters:
@bot.command()
async def report(ctx, user: discord.Membmer, *, reason: str): # первый kwarg используется как "собирающий" аргумент
# https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/commands.html#keyword-only-arguments
...
[p]report User#0000 Нарушение правила 42
from asyncio import TimeoutError as AsyncTimeoutError
@bot.command()
async def report(ctx):
...
try:
member = await bot.wait_for("message", check=lambda m: m.author == ctx.author, timeout = 60) # Базовая проверка - будет ловить сообщения от пользователя запустившего команду везде.
except AsyncTimeoutError:
await ctx.send("Вы уснули, я ушёл")
return
# На данный момент переменная "member" является лишь строкой, и не факт что это реальный пользователь
# Используем конвертер для перевода из строки в пользователя
# https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/api.html#discord.ext.commands.MemberConverter
try:
member = commands.MemberConverter().convert(ctx, member)
except commands.BadArgument:
await ctx.send("Это не пользователь, кого вы пытаетесь ~~на...~~ обмануть")
return
# и тоже самое для причины
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question