Discord.js 与 mysql (查询,如果不发送消息到通道)
Posted
技术标签:
【中文标题】Discord.js 与 mysql (查询,如果不发送消息到通道)【英文标题】:Discord.js with mysql (query and if not send message to channel ) 【发布时间】:2021-04-26 01:51:56 【问题描述】:我刚开始为我的不和谐编写一个机器人,我遇到了他的问题,我会尽量具体一点。
所以我有一个包含我的游戏数据的 mysql 数据库,我想使用该表,以便我的玩家能够通过他们自己的身份验证并解锁被锁定的面板。
表是用户,我创建了discordId列,我想做的是当播放器运行它需要执行的命令时SELECT * FROM users WHERE discordId = '$target.id'
,id在discordId中没有记录,然后尝试UPDATE users SET discordId = '$message.author.id' WHERE name = '$message.author.username'
,但可能玩家在 discord 中的名称与游戏中的名称不同,所以我想向他发送一条消息,将他的游戏名称更改为与 discord 相同的名称。
我会给你看我的 .js 文件
const MessageEmbed = require("discord.js")
const redlight = require("../../colours.json");
module.exports =
config:
name: "auth",
description: "Authentication to the Billing with discord!",
usage: "%auth",
category: "panel",
accessableby: "Members",
aliases: ["authentication", "access"]
,
run: async (bot, message, args, con) =>
let target = message.author;
con.query(`SELECT * FROM users WHERE discordId = '$target.id'`, (err, req) =>
if(err) throw err;
if(!req[0].discordId) return message.channel.send(`**$message.author.username** Please change your lord name in game to **$message.author.username** and then do %auth`)
message.delete();
if(err) throw err;
con.query(`UPDATE users SET discordId = '$message.author.id' WHERE name = '$message.author.username'`);
message.channel.send(`You have been authenticated **$message.author.username**...`);
if(message.mentions.users.first()) return message.channel.send("You're not allowed to do that!");
// return;
let embed = new MessageEmbed()
.setColor(redlight)
.setAuthor(`$message.guild.name Modlogs`, message.guild.iconURL)
.addField("Panel:", "Authentication")
.addField("Player:", message.author.username)
.addField("Description:", "Have been authenticated")
.addField("Date:", message.createdAt.toLocaleString())
let sChannel = message.guild.channels.cache.find(c => c.id === "801181624809160735")
sChannel.send(embed);
);
我真的需要帮助,别忘了我刚刚开始学习如何做不和谐机器人。
TIA。
【问题讨论】:
从您的问题来看,您似乎是在要求某人为您编写代码 - 因为您已指定不会因“良好尝试”而引发错误。 Stack Overflow 不是代码编写服务,它的工作原理是如果用户做出了良好的尝试,社区会尽力提供帮助。请咨询 (***.com/help/how-to-ask) 了解更多信息。 这是我得到的错误TypeError: Cannot read property 'discordId' of undefined
我并没有说我想让 stckoverflow 给我写代码,只是为了“调试”并帮助我在哪里失败,但无论如何我看到这个网站是为了那些什么都知道的人,然后你们随便说什么,因为你们知道发生了什么。
以这种态度没有人会帮助你 - 你没有指定错误,因此你没有得到帮助。现在您指定了一个错误,我们可以开始帮助您。
【参考方案1】:
我从上面的错误中找到了导致您问题的原因。
我不知道这行是什么意思,因为您似乎将数组视为对象,这是行不通的。
if(!req[0].discordId) return message.channel.send(`**$message.author.username** Please change your lord name in game to **$message.author.username** and then do %auth`)
message.delete();
我也不能告诉你用什么替换它,因为我不知道 req
数组是什么,只是它是导致你问题的原因。
【讨论】:
req
是对我的数据库的关键请求,有些人使用行,但我使用 req。它在其他命令中运行良好以上是关于Discord.js 与 mysql (查询,如果不发送消息到通道)的主要内容,如果未能解决你的问题,请参考以下文章
如何发送数据库内容而不是 [object Object] Discord.js + mysql
Discord.js 和 mysql 检查新的数据库条目并输出它们?
我的不和谐机器人上的数据库(Discord.js + mysql)