簡體   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