напиши код на python для discord бота чтобы бот смог делать это:
если написать команду !q_lockchat то выбранный чат был не виден для всех ролей кроме бот и глав админ. Этой командой может пользоваться только бот и глав админ роли
python
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_ready():
print('Bot is ready')
# Команда для блокировки чата
@bot.command()
@commands.has_role('Название главной админ роли')
async def q_lockchat(ctx, channel_name: str):
channel = discord.utils.get(ctx.guild.channels, name=channel_name)
if channel:
# Блокируем чат для всех ролей, кроме бота и главной админ роли
for role in ctx.guild.roles:
if role.name != 'Название главной админ роли' and not role.is_bot_managed():
await channel.set_permissions(role, read_messages=False)
await ctx.send(f'Чат "{channel_name}" заблокирован для всех ролей, кроме бота и главной админ роли.')
else:
await ctx.send(f'Чат "{channel_name}" не найден.')
# Обработка ошибки отсутствия прав у пользователя
@q_lockchat.error
async def q_lockchat_error(ctx, error):
if isinstance(error, commands.MissingRole):
await ctx.send('У вас нет прав на использование этой команды.')
bot.run('YOUR_TOKEN')
В этом коде мы создаем экземпляр `Bot` из discord.py и устанавливаем префикс команд `!`. Мы также включаем интенты, чтобы получить доступ к участникам сервера.
В функции `on_ready` мы просто печатаем сообщение о том, что бот готов к работе.
Затем мы определяем команду `q_lockchat`, которая принимает один аргумент `channel_name` - это название чата, который мы хотим заблокировать. Мы используем декоратор `has_role`, чтобы проверить, имеет ли вызывающий пользователь главную админ роль.
Внутри команды мы ищем чат с заданным именем и затем устанавливаем разрешения только для ролей, не являющихся ботами и не являющихся главной админ ролью, запрещая им чтение сообщений в этом чате.
Затем мы отправляем сообщение о том, что чат был заблокирован, или сообщение о том, что чат не был найден.
Наконец, мы определяем обработчик ошибок `q_lockchat_error`, который будет вызываться, если вызывающий пользователь не имеет прав на использование команды. В этом случае мы просто отправляем сообщение о том, что у пользователя нет прав на использование этой команды.
Чтобы запустить бота, замените `'YOUR_TOKEN'` на токен вашего бота Discord. Токен можно получить в разделе "OAuth2" на странице настроек вашего бота в Discord Developer Portal.
Этот код является только основой для достижения требуемой функциональности и может потребовать дополнительной настройки и обработки ошибок. Однако, он должен быстро установить блокировку для чата при использовании команды `!q_lockchat` для главной админ роли и бота.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет