Установка пользователем командой канала в котором бот может писать

Хочу добавить боту слэш команду, которая указывает канал в котором бот сможет писать. Не знаю через какую базу данных это получится осуществить, но надеюсь на вашу помощь :) Использую disnake.

Мой код:

count = 0
persons = {}
@bot.event
async def on_message(message):
    if bot.user in message.mentions:
        async with message.channel.typing():
               await asyncio.sleep(1)
        await message.channel.send(f"{random.choice(possible_responses)}")
    if bot.user in message.mentions:
        return
    if not message.author.bot:
        if message.author not in persons:
            persons[message.author] = 1
        else:
            persons[message.author] += 1
    if persons[message.author] % 7 == 0:
        async with message.channel.typing():
               await asyncio.sleep(1)
        await message.channel.send(f"{random.choice(possible_responses)}")

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

Автор решения: web developer
    Я бы сделал так:
    
    Человек использует команду
    memer config
    Бот отвечает

 set    current channel as meme channel
    Ваш скрипт сохраняет идентификатор канала ( ctx.channel.id) 
    где-то (в идеале в базе данных SQL)
    Получить идентификатор канала, связанный с идентификатором пользователя, когда это необходимо,
    channel = client.get_channel(channel_id)
    Разместите их мемы, используя
    await channel.send("them memes")
    Надеюсь, это помогло
→ Ссылка
Автор решения: q r t s

Я недавно написал свой код по изменению подобных каналов используя sqlite3.

В вашей таблице должно быть:

@client.event
async def on_ready():
    cursor.execute("""CREATE TABLE IF NOT EXISTS guilds (
        guild TEXT,
        id INT,
        test INT
    )""")

    for guild in client.guilds:
        if cursor.execute(f"SELECT id FROM guilds WHERE id = {guild.id}").fetchone() is None:
            cursor.execute(f"INSERT INTO guilds VALUES ('{guild}', {guild.id}, 0)")

Включение канала для команд:

@client.command()
async def ontest(ctx, *, channel):
    channel1 = discord.utils.get(ctx.guild.text_channels, name=f"{channel}")
    if channel1 != None:
        channel2 = channel1.id
        for row in cursor.execute(f"SELECT test FROM guilds WHERE id = {ctx.guild.id}"):
            if row[0] == 0:
                cursor.execute(f"UPDATE guilds SET test = '{channel2}' WHERE id={ctx.guild.id}")
                embed = discord.Embed(title='<a:checkmark:1047521758523166790> Теперь команды доступны только в этом канале.')
                await ctx.reply(embed=embed)

Отключение канала:

@client.command()
async def offtest(ctx):
    for row in cursor.execute(f"SELECT test FROM guilds WHERE id = {ctx.guild.id}"):
        if row[0] != 0:
            cursor.execute(f"UPDATE guilds SET test = '0' WHERE id={ctx.guild.id}")
            embed = discord.Embed(title='<a:checkmark:1047521758523166790> Теперь команды доступны на всём сервере.')
            msg = await ctx.send(embed=embed)
            await asyncio.sleep(10)
            await msg.delete()
→ Ссылка