我一直在关注 Worn Off Keys Discord.JS 指南以更好地了解 discord.js,尽管我对 JS 相当了解。但是在编码反应角色时我遇到了一个问题。我从 WOK Discord JS 存储库中克隆了一个特殊文件的代码。我通常克隆文件,然后根据我的喜好调整它们,添加和删除一些部分。但是这一次,当我运行代码来测试基本克隆时,我收到一条错误消息,说 TypeError [EMOJI_TYPE]: Emoji must be a string or GuildEmoji/ReactionEmoji
我找不到任何可以解决此问题的地方,因为它在教程视频中使用完全相同的代码工作.
这是我的特殊反应角色文件的代码:
const firstMessage = require('./first-message')
module.exports = (client) => {
const channelId = '870818745109585920'
const getEmoji = (emojiName) => client.emojis.cache.find((emoji) => emoji.name === emojiName)
const emojis = {
red_circle: 'CrackShot / sniper',orange_circle: 'Scrambler / Shotgun',yellow_circle: 'Whipper / P90',green_circle: 'RPEGG / RPG',blue_circle: 'Free Ranger / Semi-Auto',purple_circle: 'EGG-K / AK-47',white_circle: 'TriHard / AUG',black_circle: 'Cluck-9mm / Pistol'
}
const reactions = []
let emojiText = '**GUN ROLES**\n\n'
for (const key in emojis) {
const emoji = getEmoji(key)
reactions.push(emoji)
const role = emojis[key]
emojiText += `${emoji} = ${role}\n`
}
firstMessage(client,channelId,emojiText,reactions)
const handleReaction = (reaction,user,add) => {
if (user.id === '869698265698947102') {
return
}
const emoji = reaction._emoji.name
const { guild } = reaction.message
const roleName = emojis[emoji]
if(!roleName) {
return
}
const role = guild.roles.cache.find((role) => role.name === roleName)
const member = guild.members.cache.find((member) => member.id === user.id)
if (add) {
member.roles.add(role)
} else {
member.roles.remove(role)
}
}
client.on('messageReactionAdd',(reaction,user) => {
if (reaction.message.channel.id === channelId) {
handleReaction(reaction,true)
}
})
client.on('messageReactionRemove',false)
}
})
}
您看到的 first-message
文件是:
const addReactions = (message,reactions) => {
message.react(reactions[0])
reactions.shift()
if (reactions.length > 0) {
setTimeout(() => addReactions(message,reactions),750)
}
}
module.exports = async (client,id,text,reactions = []) => {
const channel = await client.channels.fetch(id)
channel.messages.fetch().then((messages) => {
if (messages.size === 0) {
channel.send(text).then((message) => {
addReactions(message,reactions)
})
} else {
for (const message of messages) {
message[1].edit(text)
addReactions(message[1],reactions)
}
}
})
}
我从这些文件添加到主 index.js
文件的所有内容是 const roleclaim = require('./role-claim')
以及后来的 client.on(ready)
等。我添加了 roleclaim(client)
来运行机器人代码。有什么建议么?对不起,大量的文字。请帮忙。