【发布时间】:2021-09-26 01:32:18
【问题描述】:
我一直在尝试做一个提及前缀。我已经尝试了所有可能的方法,但不知何故没有奏效。
这是我的代码:
const {MessageEmbed} = require('discord.js')
const client = require('../index')
const db = require('quick.db')
const dbx = require('xen.db')
client.on('message', async (message) => {
if(message.author.bot || message.channel.type === "dm") return;
let prefix;
let prefixess
let prefixes = await db.fetch(`simply_prefix_${message.guild.id}`)
const mentionPrefix = message.content.match(new RegExp(`^<@!?(${client.user.id})>`,'gi'))
if (prefixes === null) {
prefixess = "s!"
prefix = "s!" && mentionPrefix[0]
} else {
prefix = prefixes && mentionPrefix[0]
prefixess = prefixes
}
if(message.mentions.members){
if(message.content.endsWith(mentionPrefix[0])){
const pingEmbed = new MessageEmbed()
.setColor('YELLOW')
.setDescription(`The server prefix is: \`${prefixess} || @SimplyBot\`\nTo see commands, please use \`<${prefixess} || @Simply>help\`!`)
return message.channel.send(pingEmbed)
}
}
const messageArray = message.content.split(' ');
const cmd = messageArray[0];
const args = messageArray.slice(1);
if (!message.content.startsWith(prefix)) return;
const commandfile = client.commands.get(cmd.slice(prefix.length)) || client.commands.get(client.aliases.get(cmd.slice(prefix.length)));
if(commandfile){
if(commandfile.config.premium){
if(commandfile.config.premium === true){
const premium = dbx.fetch(`simply_premium`)
const expiry = dbx.fetch(`simply_premium_date_${message.guild.id}`)
if(!message.guild.id.includes(premium)){
return message.reply(`You cannot run this command as it is only premium!`)
} else if(message.guild.id.includes(premium)){
commandfile.run(client, message, args, dbx, db)
}
if(expiry){
if(message.guild.id.includes(premium) && Date.now() > expiry) {
dbx.pull(`simply_premium`, message.guild.id)
dbx.set(`simply_premium_date_${message.guild.id}`, 0)
}
}
}
} else if(!commandfile.config.premium) {
commandfile.run(client, message, args, dbx, db)
}
}
})
当我输入“帮助”时,它会返回一个错误:
(node:19812) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '0' of null
有人可以帮助我吗,如果可以的话,那就太好了!
【问题讨论】:
-
你应该把
if(!mentionPrefix) return; -
我不希望它只是提及前缀,我也想让用户使用自定义/普通前缀。
标签: javascript discord discord.js bots prefix