【问题标题】:Discord js v12 Add rights to a channel if user reacts to a specific messageDiscord js v12 如果用户对特定消息做出反应,则向频道添加权限
【发布时间】:2022-01-08 11:32:22
【问题描述】:

我有一个无法解决的问题: 每次有人对特定消息做出反应时,都会创建一个频道,然后首先做出反应的人是唯一有权查看该频道的人。我将最大反应量设置为“2”,并且我希望它使对消息做出反应的第二个人也获得查看创建的频道的权限,但我不知道该怎么做。有人有例子吗? 这是我目前拥有的:

 message.guild.channels.create("Busfahrer", {
                    type: "text",
                    parent: category,
                    permissionOverwrites: [
                        {
                            id: message.guild.id,
                            allow: ['SEND_MESSAGES', 'EMBED_LINKS', 'ATTACH_FILES', 'READ_MESSAGE_HISTORY'],
                            deny: ['VIEW_CHANNEL'],                                
                        }
                    ]
                })

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    跟踪谁先反应和第二反应,然后只给第二个人:

    const collector = reactionMessage2p.createReactionCollector(filter2p, {max: 2, time: 20000, errors: ['time'] })
    let reactedUsers = []
    
    collector.on("collect", (reaction, user) => {
      reactedUsers.push(user.id)
    })
    
    collector.on("end", async () => {
      let targetUser = reactedUsers[1]
      // channel is the channel you create
      channel.updateOverwrite(targetUser, {
        VIEW_CHANNEL: true
      })
    })
    

    我从你的other question得到了一些代码

    【讨论】:

    • 嗯,看起来不错,但我目前一直有错误代码:无法读取未定义的属性(读取'updateOverwrite')。我不知道为什么或我做错了什么。
    • 创建频道的时候一定要let channel = await message.guild.channels.create(...)
    • 我试过了,但还是不行。但是我看到当第二个人做出反应时,也会创建一个新频道,所以我也必须想办法阻止这种情况。
    • 知道了!它必须是if (reactedUsers.length === 1) ...
    • 是的,感谢您的帮助。
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2021-01-12
    • 2020-07-16
    • 1970-01-01
    • 2022-01-10
    • 2020-06-13
    • 2020-12-08
    • 2021-07-13
    相关资源
    最近更新 更多