当前缀设置为超过 1 个字符时,Discord Bot 不会回复
Posted
技术标签:
【中文标题】当前缀设置为超过 1 个字符时,Discord Bot 不会回复【英文标题】:Discord Bot won't reply when prefix being set to more than 1 character 【发布时间】:2021-09-28 16:16:16 【问题描述】:我目前正在使用机器人数据库,一切正常,但是当我将前缀设置为超过两个字符时,机器人不会回复。帮忙?
这是我的“prefix.js”代码
let newPrefix = args[0];
if (await Prefix.findOne(
guildID: message.guild.id
))
let guildPrefixes = await Prefix.findOne(
guildID: message.guild.id
);
if (!guildPrefixes)
guildPrefixes = await new Prefix(
_id: mongoose.Types.ObjectId(),
guildID: message.guild.id,
prefix: newPrefix,
)
await guildPrefixes.save();
message.channel.send(`Successfully set the guild Prefix to $newPrefix!`);
else if (guildPrefixes)
await Prefix.findOneAndUpdate(
guildID: message.guild.id,
prefix: newPrefix,
);
return message.channel.send(`Successfully updated the guild Prefix to $newPrefix!`);
这是我的消息事件
let guildPrefixes = await Prefix.findOne(
guildID: message.guild.id
);
if (message.content.startsWith(guildPrefixes.prefix))
const [cmdName, ...cmdArgs] = message.content
.slice(client.prefix.length)
.trim()
.split(/\s+/);
const command = client.commands.get(cmdName);
if (command)
command.run(client, message, cmdArgs);
【问题讨论】:
尝试记录它获得的前缀,并检查它是否与您设置的前缀匹配。如果没有,请检查保存到数据库的内容。 我已经尝试了两种方法,它显示的前缀与我希望它更改为 ("!!") 的完全相同。我什至尝试了“--”但仍然无法正常工作.. 【参考方案1】:从您对我对该问题的评论的回复来看,消息事件代码的第 7 行看起来您有一个静态前缀:
.slice(client.prefix.length)
我想可能是这样的!或?,所以长度为 1。当您尝试将其设置为 !!
,然后运行 !!test
,cmdName
将是 !test
,因为您切掉了 1 个字符(静态前缀),这不是一个命令。尝试将切片中的静态前缀更改为动态前缀:
.slice(guildPrefixes.prefix.length)
您的消息事件应如下所示:
let guildPrefixes = await Prefix.findOne(
guildID: message.guild.id
);
if (message.content.startsWith(guildPrefixes.prefix))
const [cmdName, ...cmdArgs] = message.content
.slice(guildPrefixes.prefix.length)
.trim()
.split(/\s+/);
const command = client.commands.get(cmdName);
if (command)
command.run(client, message, cmdArgs);
希望有效果
【讨论】:
感谢您的回答!我对guildPrefixes.prefix.length
做了一点修改,但仍然非常感谢您的帮助!
很高兴它提供了帮助,修复了我提供的代码(我不是真正的视觉编码员,我必须运行一些东西来查看它们是否有效,所以这样的错误发生在我身上)。以上是关于当前缀设置为超过 1 个字符时,Discord Bot 不会回复的主要内容,如果未能解决你的问题,请参考以下文章