首页 > 解决方案 > .on("ready") 用mysql定义公会ID

问题描述

我试图用命令 trought 数据库“mysql”编写一个简单的自定义统计信息,我有关于在“Ready”函数中定义 guildID 的问题是无论如何定义它,或者我需要搜索其他解决方案

const Discord = require("discord.js")
const { bot } = require('../index');
const { mysql } = require('../index')

bot.on('ready', async () => {
  setInterval(function() {
    let sql = 'SELECT * FROM stats WHERE guildID = ?'
    mysql.query(sql, [guild.id], (err, results) => {
      let allchannels = results.channelID
      let guildid = results.guildID
      setInterval(() => {
        const guild = bot.guild.get(`${guildid}`)
        var userCount = guild.memberCount;
        const totalUsers = bot.channels.get(`${allchannels}`)
        totalUsers.setName(`total members = ${userCount}`)
      }, 20000);
      })    
  }, 15000);
})

connection.query(sql, [guild.id], (err, results) => {
ReferenceError: guild is not defined

我想编写一个像 StartIT v4 bot 这样的统计数据,但是 idk 有可能准备好了吗?我不想在任何重启时使用我的机器人使用命令,例如!start statistic 等,如果有人知道如何修复它或有任何解决方案,我很高兴

标签: mysqlnode.jsdiscord.js

解决方案


你的问题是公会没有定义,机器人对象guild不仅guilds有一个列出所有公会的集合。您可以获取特定服务器的 id 并过滤集合,或者我认为更适合您的案例循环的方法抛出空洞集合并设置统计信息。

至于它是否可能,您可以使用 bot.onguildCreateguildDelete在机器人加入新服务器或离开服务器时进行监听。我不知道你想在你的统计数据中拥有什么值,但如果你想在你的机器人运行的所有服务器上进行概述,我会使用创建和删除事件。

在这里你可以看到客户端(你的机器人)没有属性guild discord.js 客户端


推荐阅读