from discord import Interaction, TextChannel, app_commands, InteractionResponse
from discord.ext import commands
from bot.utils.database import db
class SetInfoCommand(commands.Cog):
def __init__(self, bot: commands.AutoShardedBot) -> None:
self.bot = bot
@app_commands.command(description="Канал, в который бот будет отправлять информацию о новых обновлениях")
@app_commands.describe(info="Канал для обновлений")
@app_commands.rename(info="канал")
@app_commands.guild_only()
async def setinfo(self, interaction: Interaction, info: TextChannel):
response: InteractionResponse = interaction.response # type: ignore
member = interaction.guild.get_member(interaction.user.id)
if member is None or not member.guild_permissions.manage_guild:
return await response.send_message(
content="У вас нет прав для выполнения этой команды. Необходимо иметь право 'Управление сервером'",
ephemeral=True
)
guild_id = interaction.guild_id # ID сервера
info_id = info.id # ID текстового канала
if not await db.server_exists(guild_id):
await db.insert_info(guild_id, info_id)
else:
await db.update_info(guild_id, info_id)
await response.send_message(
content=f"Установлен канал для уведомлений о обновлениях: {info.mention}",
ephemeral=True
)
async def setup(bot):
await bot.add_cog(SetInfoCommand(bot))
Но теперь мне бы разобраться как изменять ui.View. Чтобы все что я внес в View можно было перезапустить так же как и коги