@DierLL

Как сделать создание канала с разрешением на просмотр определённому участнику?

Хочу сделать команду, например
a!adm <пользователь>
Объясняю суть команды: Администратор прописывает эту команду, создаётся канал в определённой категории под названием "в-администрацию", туда добавляются роли ст. администратора (например) и сам пользователь, айди/пинг которого администратор указал.
Права в канале должны быть на чтение и отправку сообщений. Пытался сделать сам, ничего не получилось.
Также желательно, чтоб младший ранг (модератор) не мог вызвать старшего (администратора/зама) на "проверку".
Также по команде чтоб был канал удалён. Заранее спасибо за любую помощь!!
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@da_da_ya_neudachnik
Просто muradixxx :3
Готовый код для Вас никто не пишет. Вам могут только подсказать, каким образом это сделать.
Могу Вам прислать подобную команду, попробуйте дальше под себя реорганизовать.
@Bot.command()
async def report(ctx):
    everyone = discord.utils.get(ctx.guild.roles,name="@everyone")
    support = discord.utils.get(ctx.guild.roles,name="Discord Support")
    support1 = discord.utils.get(ctx.guild.roles,name="Гл. Модератор")
    channel = await ctx.message.guild.create_text_channel('ticket')
    await channel.set_permissions( ctx.message.author, view_channel = True, send_messages = True)
    await channel.set_permissions( everyone, view_channel = False, send_messages = False)
    await channel.set_permissions( support, view_channel = True, send_messages = True)
    await channel.set_permissions( support1, view_channel = True, send_messages = True)
    await ctx.channel.send(f"```DSBot » Вы успешно создали тикет.```")
    await channel.send(f"Вопрос для <@&852590977381433397>.\nДля закрытия тикета, введите - /close_report")
@Bot.command()
async def close_report(ctx,member:discord.Member = None):
    channel = ctx.channel
    await ctx.channel.send(f"```DSBot » Данный тикет успешно закрыт.```")
    await asyncio.sleep(10)
    await ctx.channel.set_permissions( ctx.message.author, view_channel = False, send_messages = False)
    await ctx.channel.set_permissions( "@everyone", view_channel = False, send_messages = False)
    await ctx.channel.set_permissions( "Discord Support", view_channel = False, send_messages = False)
    await ctx.channel.set_permissions( member, view_channel = False, send_messages = False)
    await ctx.channel.set_permissions( "Гл. Модератор", view_channel = False, send_messages = False)

Мой старенький код, надеюсь, Вам поможет чем-то.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
fenrir1121
@fenrir1121
ABAP developer, Python developer
Пытался сделать сам, ничего не получилось.

Присылайте что получилось, если нужна конкретная помощь.

В общих чертах для изменения прав и доступов ознакомьтесь с классом PermissionOverwrite и методами для канала вроде overwrites_for, permissions_for, set_permissions.
Этого более чем достаточно для решения данного вопроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы