@znsxwq

Как сделать проверку на совпадении элемента из списка и значение в sqlite3?

Я розробатываю систему гильдий и делаю команду для создания гильдии и хочу сделать проверку по имени. Я имею ввиду если гильдия с таким именем есть то выдает ошибку, а если нет то гильдия успешно создается но код не роботает и выдает ошибку:
Command raised an exception: TypeError: 'NoneType' object is not subscriptable


Можно как то решить эту проблему? Заранее спасибо.

Вот мой код:
@commands.command(aliases=['gcreate'])
	async def __create_guild(self, ctx, name: str = None):
		color = discord.Color.random()
		guild = ctx.guild
		create = self.cursor.execute('SELECT guild_create_numb FROM users WHERE id = ?', (ctx.author.id,)).fetchone()[0]
		names = self.cursor.execute('SELECT g_name FROM guilds').fetchone()[0]
		if create == 1:
			await ctx.send(embed = discord.Embed(title=f"", description=f'**<@{ctx.author.id}>, вы не можете создать больше гильдий!**', color=0xf61e1e))
		else:
			if name in names:
				await ctx.send(embed = discord.Embed(title=f"", description=f'**<@{ctx.author.id}>, гильдия с таким названием уже существует!**', color=0xf61e1e))
			else:
				self.cursor.execute("INSERT INTO guilds VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", (name, 'Пусто...', ctx.author.id, 'Не назначен...', 0, 0, 0, 0, 0,))
				self.cursor.execute(f"UPDATE users SET member_guild = '{name}' WHERE id = ?",(ctx.author.id,))
				self.cursor.execute("UPDATE users SET guild_create_numb = ? WHERE id = ?",(1, ctx.author.id,))
				self.connection.commit()
				#role = await guild.create_role(name=f"Участник гильдии '{name}'", colour = color)
				#await ctx.author.add_roles(role)

				embed = discord.Embed(title=f"Гильдия `{name}` успешно создана", description=f"Настроить гильдию: `{ctx.prefix}gedit`", colour=color)
				embed.set_footer(text=f"{ctx.author}", icon_url=f"{ctx.author.avatar_url}")
				await ctx.message.channel.send(embed = embed)
				print(names)
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
.fetchone()[0]
Выстрелил себе в ногу, называется. .fetchone() может вернуть None, если SELECT не нашел ни одной подходящей записи, и тогда попытка обратиться по индексу сгенерирует
исключение
TypeError: 'NoneType' object is not subscriptable

Так что проверяй, что тебе вернул fetchone().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы