#python-3.x #discord.py
#python-3.x #discord.py
Вопрос:
Я пытаюсь выполнить команду, которая запрашивает пользователя, который упоминается в команде подобным образом sir pls testinput @user
, хочет ли он играть. Если он отвечает с sir pls testinput accept
, то он должен что-то сделать.
Мой подход к этому был (который, к сожалению, не работает, потому что у него нет атрибута content
и, вероятно, также нет author
.
@bot.command(pass_context = True)
async def testinput(ctx, user: discord.Member=None):
await bot.say('Do you want to play {}? If yes type **sir pls testinput accept**.'.format(user.mention))
response = bot.wait_for_message(author=user, content="sir pls testinput accept", timeout=30)
if response.content == "sir pls testinput accept" and response.author == user:
await bot.say('User {} decided to play with you {}'.format(user, ctx.message.author))
else:
await bot.say('Debug: Skipped the if statement')
Комментарии:
1.
wait_for_message
это сопрограмма. Вам просто нужно добавитьawait
перед ним, чтобы оно могло вернуть вам сообщение. Итакresponse = await bot.wait_for_message
2. Боже, я пытался отлаживать эту команду в течение часа и забыл только
await
перед командой. Я чувствую себя таким тупым прямо сейчас xD. Большое вам спасибо @Tristo .
Ответ №1:
Как сказал @Tristo в комментариях, я забыл добавить await
перед командой, поскольку это сопрограмма.
Рабочая команда выглядит следующим образом:
@bot.command(pass_context = True)
async def testinput(ctx, user: discord.Member=None):
await bot.say('Do you want to play {}? If yes type **sir pls testinput accept**.'.format(user.mention))
response = await bot.wait_for_message(author=user, content="sir pls testinput accept", timeout=30)
if response.content == "sir pls testinput accept" and response.author == user:
await bot.say('User {} decided to play with you {}'.format(user, ctx.message.author))
else:
await bot.say('Debug: Skipped the if statement')