Как сохранить disnake.Member в SQL?
Мне нужно сделать функцию создания канала, после заполнения заказа. Вот часть моего кода:
if ctx.author.id == int(client_id_from_embed):
permissions = {
ctx.guild.default_role: disnake.PermissionOverwrite(read_messages=False, view_channel=False),
ctx.author.id: disnake.PermissionOverwrite(read_messages=True, send_messages=True, view_channel=True)
}
else:
permissions = {
ctx.guild.default_role: disnake.PermissionOverwrite(read_messages=False, view_channel=False),
ctx.author: disnake.PermissionOverwrite(read_messages=True, send_messages=True, view_channel=True),
var_client_guild_permissions: disnake.PermissionOverwrite(read_messages=True, send_messages=True, view_channel=True)
}
await ctx.guild.create_text_channel(
name=f"{var_client_name}-{var_service_type}",
category=category, overwrites=permissions
)
Переменную var_client_guild_permissions я получаю от базы данных из параметра client_guild_permissions.
( вот на всякий случай код моей таблицы sql:
cursor.execute("""
CREATE TABLE IF NOT EXISTS settings (
user_id INTEGER PRIMARY KEY,
client_name INTEGER,
client_id INTEGER,
client_avatar INTEGER,
client_display_name INTEGER,
client_guild_permissions INTEGER,
service_type INTEGER,
service_description INTEGER,
service_code INTEGER,
service_images INTEGER,
sending_time INTEGER,
order_message INTEGER,
order_embed INTEGER,
mail INTEGER,
vk_url INTEGER,
telegram_url INTEGER
)
""")
)
Этот код крашит ошибкой AttributeError: 'int' object has no attribute 'id':
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\disnake\ui\view.py", line 385, in _scheduled_task
await item.callback(interaction)
File "C:\Users\user\PycharmProjects\DiscordBots\SkylightServiceBot\SkylightBot.py", line 143, in take_order_button
await ctx.guild.create_text_channel(
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\disnake\guild.py", line 1357, in create_text_channel
data = await self._create_channel(
File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\disnake\guild.py", line 1197, in _create_channel
payload = {"allow": allow.value, "deny": deny.value, "id": target.id}
AttributeError: 'int' object has no attribute 'id'
Я понимаю, что ошибка происходит из-за того, что target нужно получить именно ctx.author, а потом он сам получит id пользователя (через payload = {"allow": allow.value, "deny": deny.value, "id": target.id} в функции из disnake) и обработает его. И ошибка появляется именно тогда, когда я сам пытаюсь передать user id как параметр из словаря.
Так как мне сделать сохранение всего ctx.author в таблицу sql'а, чтобы он в принципе сохранялся без ошибки и else обрабатывался корректно?
Я пробовал поменять INTEGER в таблице на что-то другое, но успехом это не удалось.