【问题标题】:Is it possible to make a discord.py bot mute a channel?是否可以让 discord.py 机器人静音一个频道?
【发布时间】:2020-08-12 20:59:51
【问题描述】:

我正在尝试创建一个使您所在的文本频道静音的命令。我只需要知道 discord.py 库是否有此功能。就像将频道静音,这样您就不会收到任何通知。

【问题讨论】:

    标签: python python-3.x discord discord.py discord.py-rewrite


    【解决方案1】:

    你想静音什么样的声音?如果您要加入文本频道,则不应收到语音或向其广播。

    虽然channel 是一个语音频道,但您可能会发现这很有用:

    await change_voice_state(*, channel, self_mute=False, self_deaf=False)

    This function is a coroutine.
    
    Changes client’s voice state in the guild.
    

    我没有使用 discord.py,所以请原谅语法/使用错误。

    如果您的意思是希望在加入文本频道时将音频静音,可能是这样的:

    if discord.channelType == text:
        discord.VoiceState.self_deaf = true;
    

    如果您希望它使麦克风而不是扬声器静音,但如果您只是在一个文本频道中,这是必要的:

        discord.VoiceState.self_mute = true;
    

    这些假设机器人正在控制当前用户。

    否则,请浏览 discord.py 文档 (https://discordpy.readthedocs.io/en/latest/api.html?highlight=discord%20voicestate#),看看是否能找到更适合您确切需求的内容。

    【讨论】:

    • 我的意思是喜欢,而不是语音频道。文本频道,将它们静音,这样您就不会收到通知。对不起,如果我不够具体。我一直在浏览,但我没有设法在不和谐文档中找到任何内容。我来堆栈以验证我的问题
    • 我不知道公会权限是什么,或者你是否拥有它们,但是这又如何呢: class discord.NotificationLevel 指定公会是否在默认情况下对所有消息或提及有通知。 all_messages 成员收到每条消息的通知,无论它们是否被提及。 only_mentions 成员收到有关他们被提及的消息的通知。
    【解决方案2】:

    你应该使用TextChannel.set_permissions()

    await ctx.channel.set_permissions(ctx.author, send_messages=False)

    这应该有效,它将删除键入命令发送消息的人的权限。

    【讨论】:

    • 嗯,这不是我想要的。但是,这非常有用。谢谢。基本上我的静音命令应该是用于频道的。将其静音,这样我就不会再收到它的通知了。
    猜你喜欢
    • 2020-08-30
    • 2021-07-17
    • 2018-06-16
    • 1970-01-01
    • 2019-04-08
    • 2020-10-04
    • 2018-08-22
    • 2021-01-07
    • 2019-05-05
    相关资源
    最近更新 更多