Python Discord Bot | Как я могу использовать пользовательский ввод?

#python #python-3.x #discord #discord.py

#python #python-3.x #Discord #discord.py

Вопрос:

Я хочу создать бота для текстовой RPG. И мне нужен сеанс создания персонажа. Но я не могу получить входные данные пользователя.

 @bot.command()
async def karakterolustur(ctx):
    #Character Name
    await ctx.send("Karakterinin Adı Ne ? ")
    message_response = client.wait_for('message', check=lambda m: m.user ==ctx.user)
    ad = message_response.content
    print(ad)

    #Character Race
    await ctx.send("Bir Irk Seç [Elf | Cüce | İnsan] : ")
    message_response = client.wait_for('message', check=lambda m: m.user == ctx.user)
    irk = message_response.content

    #Character Class
    await ctx.send("Bir Sınıf Seç :")
    message_response = client.wait_for('message', check=lambda m: m.user == ctx.user)
    sinif = message_response.content
    cid = ctx.author.id
 

Я написал это. Но это не работает. Как я могу это сделать?

Ответ №1:

  1. wait_for это сопрограмма, вам нужно ее дождаться
  2. Вы используете bot.command() в качестве декоратора, почему вы используете client in wait_for ? Вам также необходимо использовать bot там
  3. Во всех лямбда-функциях вместо m.user использования m.author . discord.Message не имеет атрибута user
  4. Также в лямбда-функциях используется вместо ctx.user use ctx.author
 message_response = await bot.wait_for("message", check=lambda m: m.author == ctx.author)
 

Комментарии:

1. Спасибо. Я больше не получаю ошибок. Однако на этот раз он застрял после первого ввода. Не дает никакой реакции.

2. Да, потому что вы украшаете команду с bot.command() помощью и в wait_for том, что вы используете client , вам нужно использовать bot await bot.wait_for(...)