Переменная в discord.py возвращается как кортеж и не может использоваться с целыми числами - PullRequest
0 голосов
/ 14 июня 2019

Я создаю диссон-бота, у которого счетчик не работает, потому что переменная, которую я определил, возвращается как кортеж, даже если я положил ее в качестве переменной.

Я уже пытался сделать этосписок, но он все еще не работает, потому что список нельзя использовать с целым числом.

gayrate = 00
if message.author == client.user:
    return      
if message.content.startswith('?gayrate'): 
    mssg = "Scanning....".format(message)
    await message.channel.send(mssg)
    if "a" in message.author.display_name:
        gayrate += gayrate, 1
    elif "b" in message.author.display_name:
        gayrate += gayrate, 2
    elif "c" in message.author.display_name:
        gayrate += gayrate, 3

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

>Ignoring exception in on_message
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.6/site-packages/discord/client.py", line 270, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 16, in on_message
    gayrate += gayrate, 1
TypeError: unsupported operand type(s) for +=: 'int' and 'tuple'

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Это не переменная, которая «приходит как кортеж» - вы создали кортежи, написав:

gayrate += gayrate, 1

Полагаю, вы намереваетесь просто добавить 1 в переменную gayrate - тогда этопросто:

gayrate += 1

в вашем коде:

gayrate += gayrate, 1

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

0 голосов
/ 14 июня 2019

Кортежи являются типом данных в Python.Структура выглядит следующим образом: (VAR1, VAR2, ... VARn)

Переменная gayrate инициализируется как integer.Однако вы добавляете кортеж (gayrate, 1) к этому целому числу, что недопустимо в python.

Измените эту строку кода

gayrate += gayrate, 1

на следующее:

gayrate += gayrate + 1

Кроме того, я не уверен, для чего предназначен этот код, но в коде может быть логическая ошибка gayrate += gayrate + 1.Этот код в основном означает gayrate = gayrate + gayrate + 1.Если вы хотите только gayrate = gayrate + 1, то вы бы сделали gayrate +=1

Пожалуйста, подтвердите мой ответ, если он помог.Я пытаюсь построить реп

0 голосов
/ 14 июня 2019

Я не очень хорош в плагинах Python, но я думаю, что неподдерживаемые типы операндов для +: 'int' и 'tuple' могут иметь ответ для вас

...