discord.py | Как импортировать из БД айди канала, чтобы в последующем отправлять логи в этот канал
Я сделал базу данных на SQLite3, в которую записываются айди сервера и айди канала, в который должны отправляться логи. Если быть проще, я хочу чтобы юзер мог самостоятельно выбрать канал для отправки всех логов, и после этого бот отправлял логи в указанный юзером канал.
С кодом я очень сильно намудрил, ибо получился сплошной мусор, но команду для выбора канала я сделал:
@app_commands.command(name="логи", description="устанавливает канал для отправки логов")
@app_commands.check(is_owner)
async def logs(self, interaction: discord.Interaction):
connection = sqlite3.connect("./cogs/main.db")
cursor = connection.cursor()
cursor.execute("UPDATE Guilds SET channel_id = ? WHERE guild_id = ?", (interaction.channel.id, interaction.guild.id))
connection.commit()
connection.close()
logs = discord.Embed(title="Готово!", description=f"Теперь логи привязаны к каналу - {interaction.channel.mention}", color=discord.Color.purple())
logs.set_footer(text=f"Команду отправил {interaction.user}", icon_url=interaction.user.avatar)
await interaction.response.defer()
await interaction.followup.send(embed=logs)
Отсюда бот берет информацию в какой канал юзер просит отправлять логи, но теперь мне нужно чтобы бот отправлял в указанный канал эти самые логи.
Для начала я хотел попробовать чтобы бот отправлял удаленные сообщения в указанный юзером канал, но очень сильно намудрил:
@commands.Cog.listener()
async def on_message_delete(self, message, interaction: discord.Interaction, channel: discord.TextChannel):
if message.author.bot:
return
connection = sqlite3.connect("./cogs/main.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM Guilds WHERE guild_id = ?", (channel.guild.id,))
result = cursor.fetchone()
if result:
channel_id = result[1]
if channel_id:
await discord.TextChannel == channel_id
message_deleted_msg = discord.Embed(title=f"Было удалено сообщение в канале {message.channel.mention}", description=f"**Участник:** {message.author.mention} | {message.author}/{message.author.id}\n\n**Содержимое:**\n{message.content}", color=discord.Color.dark_purple())
message_deleted_msg.add_field(name=f"**Дата/время:**", value=f"{message.created_at.replace(tzinfo=timezone.utc).strftime('%Y-%m-%d / %H:%M:%S')}")
message_deleted_msg.set_footer(text=f"ВНИМАНИЕ: Время удаления указывается в UTC+0")
await channel_id.send(embed=message_deleted_msg)
Как можно исправить это горе-код?