Как надежно получить пользовательский ввод в качестве переменной из списка определенных опций, используя discord.py? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь сделать игру в догадки в боте Discord.Я сделал игру, но не уверен, как получить пользовательский ввод через Discord.Я знаю об этом методе wait_for, чтобы получить конкретный ответ.Проблема в том, что он проверяет только определенные строки.Я ищу способ проверить список возможных строк и сохранить тот, для которого он проверяет истину.(Пример: если одна из строк используется для хранения входных данных в переменной)так что просто найдите m.content и сохраните его как «угадай».В настоящее время он просто ничего не выводит, и если я изменю его на:

def check(m):
    return m.content == '1' and m.channel == channel
guess = await client.wait_for('message', check=check, timeout=120.0)

Он будет принимать только ту строку, на которую он проверяет.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

possible_numbers = [str(i) for i in range(1,51)]

Вы не можете сравнить int с string с ==. Итак, сделайте так, чтобы список содержал только строки.

0 голосов
/ 10 мая 2019

Возможно, у вас есть метод, который будет интерпретировать все сообщение, которое они публикуют, чтобы вызвать команду?

@bot.event
async def on_message(ctx): # compute every message, not just commands
    message_being_interpreted = ctx.content.lower()
    print(message_being_interpreted ) # will print all messages
    # do things to parse it like this
    if "!guess" in message_being_interpreted:
        pass # or do stuff

Это будет прекрасно работать, если пользователь должен будет указать аргумент с помощью своей команды, например !guess 17463, но вы также можете сделать так, чтобы пользователи просто вводили догадку, например 17463, а затем, когда они вводят правильное значение думаю, это вызывает какое-то событие.

...