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)

Discord.js 中的 MySQL 黑名单系统

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

discord.js 中的 MySQL