【问题标题】:Discord Bot Unavailable Guilds TroublesDiscord Bot 不可用 公会麻烦
【发布时间】:2021-12-02 11:12:01
【问题描述】:

我开始为我朋友的服务器创建自己的 Discord 机器人,但我一直遇到同样的问题。

我写了一个简单的东西来在我和机器人之间进行第一次交互:

client.on("messageCreate", message => {
    console.log(message.content);
});

这应该在控制台中写入在机器人连接的不和谐服务器上发送的任何消息的内容(它只连接到我的测试服务器)

我不明白为什么这不起作用,所以我开始寻找它并使用“调试”事件。

当运行node index.js 时,控制台告诉我:

Booting up...
[WS => Manager] Fetched Gateway Information
URL: wss://gateway.discord.gg
    Recommended Shards: 1
[WS => Manager] Session Limit Information
    Total: 1000
    Remaining: 981
[WS => Manager] Spawning shards: 0
[WS => Shard 0] [CONNECT]
    Gateway    : wss://gateway.discord.gg/
    Version    : 9
    Encoding   : json
    Compression: none
[WS => Shard 0] Setting a HELLO timeout for 20s.
[WS => Shard 0] [CONNECTED] Took 172ms
[WS => Shard 0] Clearing the HELLO timeout.
[WS => Shard 0] Setting a heartbeat interval for 41250ms.
[WS => Shard 0] [IDENTIFY] Shard 0/1 with intents: 8
[WS => Shard 0] [READY] Session f3fcd33aad118dc188b7b63c3eec3eed.
[WS => Shard 0] [ReadyHeartbeat] Sending a heartbeat.
[WS => Shard 0] Shard will not receive any more guild packets.
   Unavailable guild count: 1
Booted !
[WS => Shard 0] Heartbeat acknowledged, latency of 112ms.
[WS => Shard 0] [HeartbeatTimer] Sending a heartbeat.
[WS => Shard 0] Heartbeat acknowledged, latency of 120ms.
[WS => Shard 0] [HeartbeatTimer] Sending a heartbeat.

然后它继续发送心跳并确认它,直到我停止它。

告诉我有什么问题是这样的:

“分片不会再收到公会包”

“不可用的公会数量:1”

这是我的整个index.js(只有我的令牌在config.json):

console.log("Booting up...");
const { Client, Intents } = require("discord.js"); 
const {spd} = require("./config.json");
const botIntents = 8;
const client = new Client({intents : botIntents});

client.login(spd);

client.once("ready", isBooted);

client.on("messageCreate", message => {
    console.log(message.content);
});

client.on("debug", err => { 
    console.log(err);
});

/////////

function isBooted() {
    console.log(" Booted !");
}

系统信息:

Windows 10
NPM 8.0.0
Node v16.11.1
Discord.js 13.2.0

如果您需要更多信息来帮助您,请告诉我。

【问题讨论】:

  • 您是否在其他公会中尝试过,并且您确定您的机器人有权查看频道及其消息?在 OAuth2 部分邀请您的机器人进入DevPortal 时,您必须选择机器人,并至少授予您的机器人Read Message History 的权限。如果你在没有任何权限的情况下邀请了你的机器人,即使给它一个角色的权限也行不通。
  • 我只是尝试了与消息和查看频道相关的所有权限,我尝试了管理员权限,并在不同的服务器上尝试了所有这些,这是相同的,除了“不可用的公会计数”为 3 时机器人在 3 台服务器上(完全合乎逻辑)

标签: javascript node.js discord discord.js bots


【解决方案1】:

您使用的唯一 Intent 似乎是 GUILD_EMOJIS_AND_STICKERS,我通过 intents calculator 发现了它。您应该显示每个意图,以便轻松修改它:

const { Client, Intents } = require("discord.js")
const client = new Client({intents : [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]});

【讨论】:

  • 非常感谢,它成功了!我使用discord.com/developers 来计算我需要的整数,它实际上告诉我 8 是管理员,我需要的意图是 68608,再次感谢您!
猜你喜欢
  • 1970-01-01
  • 2022-10-21
  • 2019-05-05
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 2021-01-31
  • 1970-01-01
相关资源
最近更新 更多