Команда ожидания discord.py выдает непредвиденную ошибку

Я впервые делаю дискорд-бота и пытаюсь сделать так, чтобы он либо устанавливал ваш никнейм, либо добавлял его в список. Я получаю синтаксическую ошибку. Где я ошибаюсь?

Я пытался изменить свой код всеми возможными способами (безрезультатно).

Я ожидал, что для этого попросят и добавят никнейм, потом выпишут первый никнейм в списке, которого нет.

Код:

@client.event
async def on_message(message):
  if message.author != client.user:
    if '!ClearNick' in message.content:
      await client.change_nickname(message.author, message.author.name)
    elif '!SetNick' in message.content:
      if message.author.id in users:
        await client.change_nickname(message.author, 'lol')
      elif message.author.id not in users:
        users.append(message.author.id)
        nicknames.append(raw_input('What nickname: ')
        await client.change_nickname(message.author, nicknames)

Он возвращает:

await client.change_nick...
    ^
SyntaxError: invalid syntax

person Community    schedule 05.04.2019    source источник
comment
Пожалуйста, не ссылайтесь на свой код; разместите сам код (не его изображение!) в своем вопросе. Без этого ваш вопрос будет менее полезен для других людей в будущем, если срок действия ссылки истечет.   -  person larsks    schedule 06.04.2019
comment
@larsks исправлено, спасибо!   -  person    schedule 06.04.2019
comment
Нам нужен весь код. Этого недостаточно, чтобы дать нам нужный контекст. Где определяется клиент? Мы даже не можем запустить это и получить ту же ошибку.   -  person Modelmat    schedule 06.04.2019


Ответы (2)


Кажется, вы забыли ) в этой строке nicknames.append(raw_input('What nickname: ')

Кроме того, я хотел бы внести некоторые предложения. Вы можете установить префикс команды, это означает, что вам не нужно проверять !ClearNick, но вы можете определить новую команду через

def ClearNick(ctx, args)

а также

def SetNick(ctx,args)

person Vulpex    schedule 05.04.2019
comment
Это исправило, спасибо! Я отмечаю, что это где-то решено? - person ; 06.04.2019

Убедитесь, что весь ожидаемый код находится внутри оператора функции async def. В противном случае это не сработает (выдает SyntaxError).

person Modelmat    schedule 05.04.2019
comment
~ Я использую Repl.it, который работал нормально, пока я не добавил последнюю строку ожидания, если я ее удалю, тогда все работает нормально. Примечание. Он работает под управлением Python 3.6.1~. Это код с точки зрения того, где находится def: /а> - person ; 06.04.2019
comment
Да извини. Только что понял, что на вашей картинке есть номер версии. - person Modelmat; 06.04.2019
comment
Смотрите ответ Vulpex, он должен это исправить. Также ваш последний оператор change_nickname не будет работать. Это также должно быть в асинхронной функции on_ready. - person Modelmat; 06.04.2019
comment
Принято к сведению. Мне все равно нужно удалить его, так как raw_input не будет работать. - person ; 06.04.2019