#python #discord.py
Вопрос:
В настоящее время я пытаюсь создать бота-викторину в discord, но, похоже, у меня ничего не получается. Я провел много исследований по этому поводу, но на самом деле не смог найти конкретного ответа. Я тоже прочитал документы, но, может быть, я что-то упускаю? Это мой код:
@client.command()
async def ask(ctx):
_list = [
('question_1') ,
('question_2')]
list1 = random.choice(_list)
def answer():
if _list == list1[0]:
answer == "1"
else:
answer == "2"
await ctx.send("What is the answer to this question?")
await asyncio.sleep(1)
await ctx.send(list1)
msg = await client.wait_for('message')
if msg.content == answer:
await ctx.send("good")
else:
await ctx.send("no")
Это та концепция, которую я хочу использовать, чтобы задавать свои вопросы. Вопросы берутся из определенного списка, и ответ зависит от позиции вопроса. В результате бот всегда отвечает «нет». Я думаю, что неправильно использую оператор if, и я понятия не имею, как это исправить.
Извините, если ответ должен быть очевидным, и я недостаточно читал, или если это невозможно провернуть. Большое вам спасибо!
Ответ №1:
Я собираюсь обновить ваш код и объяснить, что произошло.
@client.command()
async def ask(ctx):
_list = [
'question_1',
'question_2']
list1 = random.choice(_list)
def answer():
answer = "-1"
if _list[0] == list1:
answer = "1"
else:
answer = "2"
return answer
await ctx.send("What is the answer to this question?")
await asyncio.sleep(1)
await ctx.send(list1)
def check(m): return m.author == ctx.author and m.channel == ctx.channel
msg = await client.wait_for('message', check=check, timeout=None)
if msg.content == answer():
await ctx.send("good")
else:
await ctx.send("no")
Вы можете попробовать это сейчас и посмотреть, что я обновил, особенно инструкции if else, когда вы проверяете, является ли элемент первым в списке или нет.
Вам также не нужно заключать question_1
и question_2
заключать скобки в _лист.
Не стесняйтесь сообщать мне, если возникнут какие-либо другие проблемы или проблемы.
Комментарии:
1. Во-первых, я хочу отметить , что в этой строке
await ctx.send(questions)
была допущена небольшая ошибка, так как она должна была бытьlist1
вместоquestions
. Мне плохо, но проблема была не в этом. Я попробовал ваш код, но результат, который отправил бот, все равно всегда был «нет». Казалось, это не решило проблему. Хотя спасибо, что уделили мне время. Я был бы очень рад, если бы вы нашли другое решение.2. Еще раз привет @MarioArquette! Спасибо, что сообщили мне об этом. Я исправил это и обновил свой ответ. Дайте мне знать, если есть что-нибудь еще
![]()
3. Большое вам спасибо @Mr. Вредитель! Ваш код работает идеально, и бот теперь правильно реагирует. Спасибо за всю вашу помощь