如果我自己创建数据库条目,则我的代码工作正常,但是当我让别人尝试创建条目时(即使我使用.ensure进行了检查)
以前,它会自动创建一些条目,但不确定是什么更改,然后停止创建它们,我试图更改代码,但唯一的解决方案似乎是手动创建条目。
通常在调用+ elo命令
时发生错误const Discord = require('discord.js')
const client = new Discord.Client()
const Enmap = require("enmap");
client.elo = new Enmap({name: "elo"});
gameVar = 0;
client.on('ready', () => {
console.log("Connected as " + client.user.tag)
// List servers the bot is connected to
console.log("Servers:")
client.guilds.forEach((guild) => {
console.log(" - " + guild.name)
var generalChannel = client.channels.get("602976588543426596") // Replace with known channel ID
generalChannel.send("--10 Man Bot--")
generalChannel.send("To begin a game, type +join")
generalChannel.send("")
})
})
client.on('message', (receivedMessage) => {
if (receivedMessage.author == client.user) { // Prevent bot from responding to its own messages
return
}
if (receivedMessage.content.startsWith("+")) {
processCommand(receivedMessage)
}
if (receivedMessage.guild) {
client.elo.ensure(`${receivedMessage.guild.id}-${receivedMessage.author.id}`, {
user: receivedMessage.author.id,
guild: receivedMessage.guild.id,
elo: 0,
console.log("entry created")
});
}
})
function processCommand(receivedMessage) {
let fullCommand = receivedMessage.content.substr(1) // Remove the leading exclamation mark
let splitCommand = fullCommand.split(" ") // Split the message up in to pieces for each space
let primaryCommand = splitCommand[0] // The first word directly after the exclamation is the command
let arguments = splitCommand.slice(1) // All other words are arguments/parameters/options for the command
console.log("Command received: " + primaryCommand)
if (primaryCommand == "elo") {
const key = `${receivedMessage.guild.id}-${receivedMessage.author.id}`;
return receivedMessage.channel.send(`ELO: ${client.elo.get(key, "elo")}`);
}
bot_secret_token =
client.login(bot_secret_token)
这是错误消息:
C:\Users\retski\node_modules\enmap\src\index.js:945
if (!this.has(key)) throw new Err(`The key "${key}" does not exist in the enmap "${this.name}"`, 'EnmapPathError');
^
EnmapPathError: The key "546829579290017793-269522297105285121" does not exist in the enmap "elo"
at Map.[check] (C:\Users\retski\node_modules\enmap\src\index.js:945:31)
at Map.get (C:\Users\retski\node_modules\enmap\src\index.js:227:19)
at processCommand (C:\Users\retski\Desktop\10 man leffy\10man.js:69:60)
at Client.client.on (C:\Users\retski\Desktop\10 man leffy\10man.js:29:9)
at Client.emit (events.js:198:13)
at MessageCreateHandler.handle (C:\Users\retski\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
at WebSocketPacketManager.handle (C:\Users\retski\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:105:65)
at WebSocketConnection.onPacket (C:\Users\retski\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
at WebSocketConnection.onMessage (C:\Users\retski\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
at WebSocket.onMessage (C:\Users\retski\node_modules\ws\lib\event-target.js:120:16)```
答案 0 :(得分:0)
您正在processCommand(receivedMessage)
之前致电ensure
。
尝试一下:
client.on('message', (receivedMessage) => {
if (receivedMessage.author == client.user) { // Prevent bot from responding to its own messages
return;
}
if (receivedMessage.guild) {
client.elo.ensure(`${receivedMessage.guild.id}-${receivedMessage.author.id}`, {
user: receivedMessage.author.id,
guild: receivedMessage.guild.id,
elo: 0,
});
console.log('entry created');
}
if (receivedMessage.content.startsWith('+')) {
processCommand(receivedMessage);
}
});