Есть ли способ скрыть список каналов с помощью discord.py? - PullRequest
0 голосов
/ 05 августа 2020

Итак, я писал бота для одного из серверов моих друзей, и мне кажется, что он работает. Мне нужен способ скрыть несколько каналов. Я уже написал функцию, которая дает мне все каналы, которые мне нужно скрыть в массиве. Мне нужна функция, которая при вызове будет перебирать элементы в моем массиве, она удалит разрешение read_messages у указанного пользователя, которое также предоставляет моя функция.

# expected input
hide(channels_to_hide, user)

Ожидаемый результат: все каналы, перечисленные в channels_to_hide скрыты от user.

Я пытался использовать await channel.set_permissions(), но, похоже, не могу заставить это работать, а документы кажутся немного пространственными при скрытии каналов. Также я использую версию перезаписи discord.py.

Спасибо, Soupy

1 Ответ

1 голос
/ 05 августа 2020

Вам следует подумать о роли, которая будет скрывать все указанные каналы. Вы можете получить роль и добавить ее так, это должно выполняться внутри on_raw_reaction_add

@bot.event
async def on_raw_reaction_add(payload):
    if message.author.id != bot.user.id:
        return # not to take reactions from message not made by the bot itself
    
    role = 'hide' # you can also use a list of roles 
    guild = bot.get_guild(payload.guild_id)

    user = await bot.fetch_user(payload.user_id)
    name = guild.get_member_named(user.name)
    await name.add_roles(role)

Другой способ добавления ролей - это

role = discord.utils.get(ctx.guild.roles, name="role to add name")
user = ctx.message.author
await user.add_roles(role)
...