Discord.js XP系统

Posted

技术标签:

【中文标题】Discord.js XP系统【英文标题】:Discord.js XP system 【发布时间】:2019-04-30 16:39:52 【问题描述】:

我想用 mysqli 为我的机器人Hello Bot 制作一个 xp 系统,但我的代码确实有效。不是的错误是现在我第一次写,存到数据库里,但是别人会在数据库里有两次

我的代码:

   con.query(`SELECT * FROM xp WHERE id = '$message.author.id'`, (err, rows) => 
  if (err) throw err;
  let sql;
  if (rows.length < 1) 
    sql = `INSERT INTO xp (id, xp) VALUES ('$message.author.id', 30)`;
  
  else 
    let xp = rows[0].xp;
    sql = 'UPDATE xp SET xp = ' + xp + 30;
  
  con.query(sql);
);

【问题讨论】:

“我的代码不起作用” - 为什么不呢?发生什么了?您是否收到特定的错误消息?只是没有更新表格,或者没有调用 lambda,还是其他什么? 您的更新行缺少 WHERE 子句。是这个问题吗? 谢谢,我没看到,但现在错误就在那里 那个 ID 是 32 位 int 的最大值,所以对我来说看起来不对。这真的是身份证吗? ID 不应该是表的主键,所以不允许重复吗?如果它是一个键,您可能可以使用INSERT ... ON DUPLICATE KEY UPDATE ... 来添加或增加一行,或者如果存在运行两个代码副本的风险并且它们都得到了,您可以在事务中运行整个事情选择中没有任何内容,然后都插入一行,但我认为这里还有其他问题。 谢谢,这是唯一的错误,所以我不得不再做任何事情,我会看到 "xp" + 30 所以如果我在 3030 中已经有 30 个了 【参考方案1】:

抱歉回复晚了,我刚看到这个帖子,我之前遇到过这个错误 你应该做的是:运行ALTER [TABLE_NAME] MODIFY [COLUMN_NAME] BIGINT NOT NULL PRIMARY KEY; => 为什么必须这样做是因为当你试图存储作者的 id 时,它会尝试但不和谐的成员 id 的数字比 INT 类型的范围多,所以如果你这样做BIGINT id 可以存储在里面,然后你就可以继续程序了

【讨论】:

以上是关于Discord.js XP系统的主要内容,如果未能解决你的问题,请参考以下文章

discord.js 将 .json 值导入变量

我的 discord.js xp 机器人中的 ER_PARSE_ERROR 错误

Discord Bot Maker - MySQL 调平系统或 Discord.js - MySQL 调平系统

不和谐机器人 |使用 discord.js 和 MongoDB 进行排名(排行榜?)系统

Discord.js 级别角色

Javascript discord.js 排行榜