【问题标题】:How can I make a discord bot creates a channel on a command如何让不和谐机器人在命令上创建频道
【发布时间】:2021-08-13 18:46:13
【问题描述】:

你好

我目前正在开发一个名为“文件存储”的不和谐服务器(名称可能会更改) 我想知道是否有一种方法:当用户键入某个命令时,例如“fs create” 机器人会创建一个类似“channelid-storing”的频道,该频道仅对使用该命令的用户可见?

频道名称格式将显示频道 ID,然后显示“-storing”

let client = new Discord.Client()

client.on("message", message => {
  if(message.content === "ping") {
    message.channel.send("pong")
}
  
  client.on(message, async (message) => {
    if(message === `>fs create`){
   const channel = await message.guild.channels.create("channel", {
            permissionOverwrites: [
                {
                    id: message.guild.roles.everyone,
                    deny: ["VIEW_CHANNEL"],
                },
                {
                    id: message.member,
                     allow: [
                        "VIEW_CHANNEL",
                        "SEND_MESSAGES",
                        "EMBED_LINKS",
                        "ATTACH_FILES",
                        "READ_MESSAGE_HISTORY",
                    ],
                },
                {
                    id: message.guild.me, 
                    allow: [
                        "VIEW_CHANNEL",
                        "SEND_MESSAGES",
                        "EMBED_LINKS",
                        "ATTACH_FILES",
                        "READ_MESSAGE_HISTORY",
                    ],
                },
            ],
        });
    channel.editName(`${channel.id}-store`)

}
})
    
})

client.login(process.env.DISCORD_TOKEN);```

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    您只需在创建频道时提供用户权限

    if(commandname === `> fs create`){
       const channel = await message.guild.channels.create("channelname", {
                permissionOverwrites: [
                    {
                        id: message.guild.roles.everyone,
                        deny: ["VIEW_CHANNEL"],
                    },
                    {
                        id: message.member,
                         allow: [
                            "VIEW_CHANNEL",
                            "SEND_MESSAGES",
                            "EMBED_LINKS",
                            "ATTACH_FILES",
                            "READ_MESSAGE_HISTORY",
                        ],
                    },
                    {
                        id: message.guild.me, 
                        allow: [
                            "VIEW_CHANNEL",
                            "SEND_MESSAGES",
                            "EMBED_LINKS",
                            "ATTACH_FILES",
                            "READ_MESSAGE_HISTORY",
                        ],
                    },
                ],
            });
        channel.editName(`${channel.id}-store`)
    
    }
    

    顺便说一句,你必须添加你的东西,这样它才能正常工作,上面的例子展示了频道创建的工作原理。

    【讨论】:

    • 为迈泽伙伴投票
    • @Meister9667 但是我如何让频道自动命名为 channelid-storing,其中 channelid 是实际频道的 id
    • 唯一的办法就是等待它,通过const channel = await channelcreate....然后用channel.editName(${channel.id}-storing)编辑名字
    • 你能告诉我如何在你的代码中格式化它吗?对不起,我是初学者,我真的只能做简单的回复命令之类的事情,没有 tut @Meister9667
    • @Meister9667 它说“解析错误:不能在异步函数之外使用关键字'await'
    猜你喜欢
    • 2020-12-28
    • 2020-09-06
    • 2020-11-07
    • 2020-04-29
    • 2020-10-15
    • 2019-06-24
    • 2021-11-15
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多