如何定义我想在其上使用“.channels”的公会?
Posted
技术标签:
【中文标题】如何定义我想在其上使用“.channels”的公会?【英文标题】:How do I define the guild I want to use ".channels" on? 【发布时间】:2019-05-27 03:35:15 【问题描述】:我正在为我的不和谐机器人的支持服务器设置一个机器人分析人员频道。
我希望机器人能够发送消息,然后每分钟对其进行编辑。但是,当我尝试执行此操作时,我收到一条错误消息,提示我没有定义要使用 .channels
的公会。确切的错误是TypeError: Cannot read property 'channels' of undefined.
我尝试过以许多不同的方式定义我的公会,包括将它变成一个变量并将它与找到公会本身的函数结合起来。但是,这些可能的解决方案(其中一些来自一些相关的 Stack Overflow 帖子)都没有对我有用。 我也试过看一些教程,但它们也没有奏效:代码总是说我没有正确定义我的公会。
//Stats For Staff Channel
let serverchannel = bot.guilds.get("498548588318556210").channels.get("528288924917825556");
let servercount = bots.guilds.size
let uptimetotalseconds = (bot.uptime / 1000);
let uptimehours = Math.floor(uptimetotalseconds / 360);
uptimeseconds %= 3600;
let uptimeminutes = Math.floor(uptimetotalseconds / 60);
let uptimeseconds = uptimetotalseconds % 60;
let uptime = "Total Uptime: \n \n Hours: " + uptimehours + "\n Minutes: " + uptimeminutes + "\n Seconds: " + uptimeseconds + "\n Total Uptime In Seconds: " + uptimetotalseconds + "\n Total Uptime In MiliSeconds " + bot.upTime + "\n \n \n \n"
let messagetobesent = "**Bot Status** \n \n" + "Server Count: **" + servercount + " guilds** \n \n" + "Total Uptime: \n Hours: **" + uptimehours + "** \n" + "Minutes: **" + uptimeminutes + "** \n \n **Thats it!These stats are updated every minute and more are being added soon. ** "
serverchannel.send(messagetobesent)
while (true)
setTimeout(function()
message.edit(messagetobesent)
, 60000);
机器人应该使用他们的 ID 获取我希望将消息发送到的支持服务器和频道。然后,它应该发送一条存储为该通道中的变量的消息。最后,它每分钟都会使用变量的新值编辑该消息。
【问题讨论】:
为什么在无限循环中会有超时? 在继续之前等待,这些不是那样工作吗?抱歉,我对 javascript 还是很陌生。 Javascript 中的超时不会像其他语言中的暂停/睡眠那样阻止执行。在while(true)
循环中使用它会创建无限计时器。您应该改用 setInterval。
哦,好的。我仍然需要弄清楚如何修复未定义的错误,但希望有人知道如何修复它。
您以正确的方式获取频道,您唯一能做的就是检查 ID:您可以通过在 Discord 中启用开发者模式并右键单击您的公会图标来获取您的公会 ID ,然后点击“复制 ID”
【参考方案1】:
TypeError: Cannot read property 'channels' of undefined.
这个错误实际上意味着它找不到你想要获取的公会,你确定bot.guilds.get("498548588318556210")
实际上返回了一个公会吗?也许bot
是由您的代码中的另一个 Discord.js 客户端定义的,而该客户端不在您想要获得的行会中?还是真的有那个ID的公会?或者你的客户实际上是那个公会的成员?
【讨论】:
刚刚查了ID,是正确的。机器人是const bot = new discord.Client();
。而且,它确实存在,并且机器人就在其中。
修复了它,使用了你的一些建议,但删除了公会部分,因为我不需要它。谢谢!以上是关于如何定义我想在其上使用“.channels”的公会?的主要内容,如果未能解决你的问题,请参考以下文章
在 angularjs 指令中,我想在 HTML 中找到一个 id 并在其上添加类
如何在 MapView 上绘制多边形,填充它,并在其上放置一个 onTouch 事件
您如何打开 FTDI 串行端口 ttyUSBx 以便我们可以在其上运行 2 个应用程序?
如何合并集合和查询构建器,然后在其上使用分页 Laravel 8