【问题标题】:Display all Guild Names of a Bot in discord.js在 discord.js 中显示一个机器人的所有公会名称
【发布时间】:2021-10-14 22:41:36
【问题描述】:

如何在 Bot 启动时创建一个文件并在此文件中列出所有公会名称和公会 ID。当文件始终存在时,机器人应该使用新的公会和公会 ID 更新此文件。

【问题讨论】:

标签: javascript discord discord.js bots


【解决方案1】:

guilds.json

{
    Placeholder: null
}

以上是公会ID的文件

const fs = require('fs');
const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
    let guilds = client.guilds.cache
    const json = {}
    guilds.forEach(g => {
        json[g.name] = g.id
    });
    fs.writeFileSync('./guilds.json', JSON.stringify(json))
});

client.on('guildCreate', guild => {
    const file = fs.readFileSync('./guilds.json', 'utf8');
    const json = JSON.parse(file);
    json[guild.name] = guild.id;
    fs.writeFileSync('./guilds.json', JSON.stringify(json));
})

client.on('guildDelete', guild => {
    const file = fs.readFileSync('./guilds.json', 'utf8');
    const json = JSON.parse(file);
    delete json[guild.name];
    fs.writeFileSync('./guilds.json', JSON.stringify(json));
})

client.on('guildUpdate', (oldGuild, newGuild) => {
    if(oldGuild.name === newGuild.name) return;
    const file = fs.readFileSync('./guilds.json', 'utf8');
    const json = JSON.parse(file);
    delete json[oldGuild.name];
    json[newGuild.name] = newGuild.id;
    fs.writeFileSync('./guilds.json', JSON.stringify(json));
});

我的fs 语法可能有误,但至少你应该明白了。准备好后,将所有公会放入文件中,创建公会时,将公会添加到文件中,删除公会时,将公会从文件中删除。

【讨论】:

  • 请修复我的缩进,我在手机上真的很难
  • 谢谢,这很酷而且很有效,但是 Bot 已经加入的公会是怎么回事?
  • 即在 bot 重启时“刷新”它
  • 是的,但我希望我的机器人所在的所有公会都显示在此文件中,但这种方法只会使当我的机器人加入新公会时,公会会列在此文件中,但当我重新启动bot 文件将为空
  • 使用<Guild>.invites.cache.first()
猜你喜欢
  • 2021-06-17
  • 2022-06-15
  • 2018-07-28
  • 1970-01-01
  • 2020-10-22
  • 2021-06-01
  • 2020-12-11
  • 2021-12-29
  • 2021-09-04
相关资源
最近更新 更多