Как сохранить 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 в таблице на что-то другое, но успехом это не удалось.


Ответы (0 шт):