[英]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.")
}
});
當它被更新時,正如我之前所說,它會發送帶有以下顯示為未定義的休假嵌入:
任何幫助將不勝感激正在發生的事情。 謝謝:)
更新(22/02/21):這個問題仍然存在,如果它自己關閉並打開幾秒鍾,它仍然會發送嵌入。 另一個更新(23/02/21):出現錯誤,就是這樣:
UnhandledPromiseRejectionWarning: Error: 504 Gateway Time-out
如果您需要整個錯誤,請發表評論,因為我不確定 rest 是否有幫助
賞金原因:引起注意 這個問題沒有得到足夠的重視。
我聲明客戶端的代碼:
const Discord = require('discord.js');
const client = new Discord.Client();
您需要啟用意圖,您可以在此處閱讀有關它的更多信息,以及此處的意圖列表,並且有兩個特權網關意圖存在PRESENCE INTENT
和SERVER MEMBERS INTENT
存在
PRESENCE INTENT
:如果您的機器人跟蹤存在數據,您可能需要存在意圖來接收存在事件數據。
SERVER MEMBERS INTENT
:如果您的機器人跟蹤服務器成員或下載整個成員列表,您可能需要服務器成員意圖來接收成員事件和成員列表。
特權網關意圖可以在 discord.com/developers/applications/ -> Settings/Bot 上啟用。
在您的情況下,您將需要提供對guildDelete
和guildCreate
:
const { Client } = require('discord.js');
const client = new Client({ ws: { intents: ['GUILDS'] } });
guildDelete
不保證有完整的數據,只有當它被緩存時你才能得到它,有時數據被緩存並且它執行時出現 0 個錯誤,而其他時候它沒有被完全緩存,所以你得到那個錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.