Ошибка внесения человека в черный список
Появилась неизвестная ошбика, которая не дает мне занести человека в черный список.
Технически, после ввода данной команды в mysql должен поступить айди аккаунта. Но вместо этого, программа выдает следующее
Traceback (most recent call last):
File "/Users/redwest/PycharmProjects/ReddBot/venv/lib/python3.9/site-packages/discord/ext/commands/bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "/Users/redwest/PycharmProjects/ReddBot/venv/lib/python3.9/site-packages/discord/ext/commands/core.py", line 1348, in invoke
await ctx.invoked_subcommand.invoke(ctx)
File "/Users/redwest/PycharmProjects/ReddBot/venv/lib/python3.9/site-packages/discord/ext/commands/core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/Users/redwest/PycharmProjects/ReddBot/venv/lib/python3.9/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: argument of type 'int' is not iterable
Ignoring exception in command blacklist add:
Traceback (most recent call last):
File "/Users/redwest/PycharmProjects/ReddBot/venv/lib/python3.9/site-packages/discord/ext/commands/core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "/Users/redwest/PycharmProjects/ReddBot/cogs/owner.py", line 110, in blacklist_add
if userID in bl[i]['id']:
TypeError: argument of type 'int' is not iterable
Сам код
@blacklist.command(name="add")
async def blacklist_add(self, context, member: discord.Member = None):
for i in range(len(result)):
if context.message.author.id == result[i]['id']:
userID = member.id
try:
for i in range(len(bl)):
if userID in bl[i]['id']:
embed = discord.Embed(
title="Ошибка",
description=f"**{member.name}** уже в чс",
color=0xE02B2B
)
await context.send(embed=embed)
return
with db.cursor() as curs:
sqladd = "INSERT INTO blacklisted (id) VALUES (%s)"
valadd = (userID)
curs.execute(sqladd, valadd)
db.commit()
embed = discord.Embed(
title="Аккаунт занесен в ЧС",
description=f"**{member.name}** успешно занесен в чс",
color=0x42F56C
)
await context.send(embed=embed)
except AttributeError:
embed = discord.Embed(
title="Ошибка!",
description=f"Не веденно имя пользователя",
color=0xE02B2B
)
await context.send(embed=embed)
else:
if result[i]['id'] is None:
embed = discord.Embed(
title="Ошибка",
description="У вас недостаточно прав на данную команду",
color=0xE02B2B
)
await context.send(embed=embed)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
if userID in bl[i]['id']:
TypeError: argument of type 'int' is not iterable
Я так понимаю, в bl[i]['id'] у вас значение типа int, т.е. какое-то число. А конструкция x in y проверяет, что элемент x входит в коллекцию y. Поскольку число - это не коллекция, питон не понимает, как его перебирать (is not iterable). В общем, вам скорее всего нужно проверять просто равенство:
if userID == bl[i]['id']: