如何为每个Discord服务器(公会)单独设置命令



就像服务器的管理员写了"!setprefix$";则bot从"至"$"并且它只适用于上管理员的服务器

正如我想象的那样,它是在你的机器人中,你在程序的开头设置的:

const prefix = '!';

但您需要确保,如果服务器管理员编写命令!setprefix $,它会更改它。所以,这很简单,你只需要先检查命令的作者!setprefix $是管理员,只需以下内容:

if (message.member.roles.find(role => role.name === 'Admin')) 

并因此取CCD_ 3参数并将其设置在前缀变量中

client.on('message', message =>{
if (!message.content.startsWith(prefix) || message.author.bot) return; 
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === 'setprefix') {
prefix = args;
} 

据我所知,你在多台服务器上尝试这样做,如果你使用下面的答案,它将是一个全局答案,只需管理员即可更改,对于这个用例,如果它是一个公共机器人,你可以使用一个数据库,我建议使用Mongodb之类的带有mongoose或keyv的数据库。对于初学者,我建议使用keyv作为更容易的

如果不是,我仍然建议使用mongodb,但如果这对私人类型的机器人来说似乎有些过头了,请使用像enmap这样的简单机器人。

带有keyv的自定义前缀指南:https://discordjs.guide/keyv/#installation

带enmap的自定义前缀指南:https://enmap.evie.dev/complete-examples/per-server-settings

最新更新