繁体   English   中英

client.on(“guildCreate”) 在 504 网关超时上运行

[英]client.on(“guildCreate”) running on 504 Gateway Time-out

我有一个 discord.js 机器人在 Heroku 上运行,当它从公会中添加或删除时,它会向我服务器中的特定频道发送消息。 这在一周前运行良好,现在当我更新它(通过 GitHub 将更新推送到 Heroku)时,它会发送消息说它已从公会中删除。 有一个错误:

UnhandledPromiseRejectionWarning: Error: 504 Gateway Time-out

这是代码:

client.on('guildCreate', guild => {
    try{
        //Check for system channel
        if(!guild.systemChannel) return false;
        //Sends message to system channel
        guild.systemChannel.send('Thank you for adding me to your server. Run ``-setup`` to begin setup.')
        //My server and channel
        const server = client.guilds.cache.get('guildID')
        const channel = server.channels.cache.get('channelID')
        //The embed which sends to channel
        const joinEmbed = new Discord.MessageEmbed()
        .setTitle("Joined")
        .setDescription("Optic was added to a server")
        .addFields(
            { name: 'Name', value: guild.name, inline: false },
            { name: 'GuildId', value: guild.id,inline: false },
            { name: 'Guild OwnerId', value: guild.ownerID, inline: false },
            { name: 'Member Count', value: guild.memberCount, inline: false },
            { name: 'Total Guilds', value: client.guilds.cache.size, inline: true },
        )
        channel.send(joinEmbed)
    }catch(error){
        console.log("There was an error sending join embed to channel")
    }
});

client.on('guildDelete', guild => {
    try{
        //My server and channel:
    const server = client.guilds.cache.get('guildID')
    const channel = server.channels.cache.get('channelID')
    //The embed which sends to channel
    const leaveEmbed = new Discord.MessageEmbed()
    .setTitle("Removed")
    .setDescription("Optic was removed from a server")
    .addFields(
        { name: 'Name', value: guild.name, inline: false },
        { name: 'GuildId', value: guild.id,inline: false },
        { name: 'Guild OwnerId', value: guild.ownerID, inline: false },
        { name: 'Member Count', value: guild.memberCount, inline: false },
        { name: 'Total Guilds', value: client.guilds.cache.size, inline: true },
    )
    channel.send(leaveEmbed)
    }catch(error){
        console.log("There was an error sending leave embed to channel.")
    }
    
  });

当它被更新时,正如我之前所说,它会发送带有以下显示为未定义的休假嵌入:

  • 姓名
  • 公会所有者 ID
  • 成员数

嵌入图像

任何帮助将不胜感激正在发生的事情。 谢谢:)

更新(22/02/21):这个问题仍然存在,如果它自己关闭并打开几秒钟,它仍然会发送嵌入。 另一个更新(23/02/21):出现错误,就是这样:

UnhandledPromiseRejectionWarning: Error: 504 Gateway Time-out

如果您需要整个错误,请发表评论,因为我不确定 rest 是否有帮助

赏金原因:引起注意 这个问题没有得到足够的重视。

我声明客户端的代码:

const Discord = require('discord.js');

const client = new Discord.Client();

您需要启用意图,您可以在此处阅读有关它的更多信息,以及此处的意图列表并且有两个特权网关意图存在PRESENCE INTENTSERVER MEMBERS INTENT

存在PRESENCE INTENT :如果您的机器人跟踪存在数据,您可能需要存在意图来接收存在事件数据。

SERVER MEMBERS INTENT :如果您的机器人跟踪服务器成员或下载整个成员列表,您可能需要服务器成员意图来接收成员事件和成员列表。

特权网关意图可以在 discord.com/developers/applications/ -> Settings/Bot 上启用。

在您的情况下,您将需要提供对guildDeleteguildCreate

const { Client } = require('discord.js');
const client = new Client({ ws: { intents: ['GUILDS'] } });

guildDelete不保证有完整的数据,只有当它被缓存时你才能得到它,有时数据被缓存并且它执行时出现 0 个错误,而其他时候它没有被完全缓存,所以你得到那个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM