为啥我的 DJS 角色声明消息可以工作几个小时,但突然停止?

Posted

技术标签:

【中文标题】为啥我的 DJS 角色声明消息可以工作几个小时,但突然停止?【英文标题】:Why does my DJS role claim message work for a few hours, but suddenly stops?为什么我的 DJS 角色声明消息可以工作几个小时,但突然停止? 【发布时间】:2021-10-28 06:15:13 【问题描述】:

我创建了一个托管在 Heroku 上的 DJS Discord Bot,它似乎工作得非常好,除了我创建的角色声明命令。它工作得很好,机器人对频道中的消息做出反应,并为用户提供他们反应的角色。然而,几个小时后,它就停止工作了。我没有收到任何错误。

由于代码似乎运行良好,我认为这可能与我的 Heroku 应用程序有关,也许它正在睡着,这就是影响它的原因。但是验证了我的帐户,它现在有很多免费的测功时间,而且这种情况仍在发生。

我现在完全不知道该怎么办......我从来没有见过这种情况发生在其他人身上,我也不知道是什么原因造成的。

if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;

if (reaction.message.channel.id == channel) 
    if (reaction.emoji.id === '842102278223167528') 
        await reaction.message.guild.members.cache.get(user.id).roles.add(technologyRole);
     else if (reaction.emoji.id === '871172469334089738') 
        await reaction.message.guild.members.cache.get(user.id).roles.add(engineeringRole);
     else if (reaction.emoji.id === '871172735114555393') 
        await reaction.message.guild.members.cache.get(user.id).roles.add(roboticsRole);     
     else if (reaction.emoji.id === '870823307467968603') 
        await reaction.message.guild.members.cache.get(user.id).roles.add(mathRole);  
     else if (reaction.emoji.id === '871172490892804107') 
        await reaction.message.guild.members.cache.get(user.id).roles.add(chemistryRole);
     else if (reaction.emoji.id === '870823212441800714') 
        await reaction.message.guild.members.cache.get(user.id).roles.add(biomedRole);
     else if (reaction.emoji.id === '842102248993718374') 
        await
     else 
        return;
    

【问题讨论】:

请将您的代码发布到您的问题中(不是外部站点)。此外,将其修剪为仅包含相关部分(仅与此问题相关的内容) 很抱歉,感谢您告诉我! 【参考方案1】:

问题可能是当服务器重新启动时,你的机器人也没有监听消息事件,因为你让它监听通过编写命令创建的消息。最粗略的解决方案是让机器人在某个测试通道中写入命令,一旦他启动,只有模组才能看到。 例如:

bot.once('ready', () =>    
    console.log('DiscordBot is online!');
    bot.channels.cache.get("testing channelid")
        .send("-reactionrole");  //Or whatever the command is to make the message your member are supposed to react to                                        
);

所以你可能已经制作了 bot.once ready 事件,只需添加额外的两行,如果有帮助,请告诉我!

【讨论】:

以上是关于为啥我的 DJS 角色声明消息可以工作几个小时,但突然停止?的主要内容,如果未能解决你的问题,请参考以下文章

与嵌入分开发送附件的 Djs 交互

新服务器工作了几个小时,但现在连接超时

为啥我的 Discord 机器人在发出命令后立即崩溃?

为啥我的 C# 应用程序在此 REST 请求上失败,但通过浏览器可以正常工作?

为啥我在上网几个小时后收到 503 错误?节点/快递

我的反应角色机器人编写了嵌入消息,但反应没有添加角色