Как бы безумно это ни звучало, удалите аргумент self
из вашего метода. Об этом позаботится декоратор команд. (Вы также можете использовать команду cog)
class Quiz:
def __init__(self, question, answer):
self.question = question
self.answer = answer
@bot.command(pass_context=True)
async def quiz(ctx):
fido = Quiz("Starter mass?", "yeah")
nope = Quiz("WHAT?", "lel")
await ctx.send(fido.question)
def check(m):
return m.content == 'heh'
msg = await bot.wait_for('message', check=check)
await ctx.send('Right {.author}!'.format(msg))
Также ваша функция проверки работает некорректно. Он всегда использует вопрос fido
и говорит, что вы правы, только после ответа 'heh'
.
@bot.command(pass_context=True)
async def quiz(ctx):
fido = Quiz("Starter mass?", "yeah")
nope = Quiz("WHAT?", "lel")
question = random.choice((fido, nope))
await ctx.send(question.question)
check = lambda m: m.content.lower() == question.answer
msg = await bot.wait_for('message', check=check)
await ctx.send(f'Right **{msg.author.name}**!')