就像服务器的管理员写了"!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