Discord Bot 无需命令即可发送消息
Posted
技术标签:
【中文标题】Discord Bot 无需命令即可发送消息【英文标题】:Discord Bot send message without command 【发布时间】:2018-03-01 07:57:07 【问题描述】:我有一些代码在后台运行,24/7 当然是用 javascript。我想设置一个 discord.js 机器人,以在不断运行的代码发生某些事情(如错误)时输出消息。
如何在不收听消息的情况下向任何频道发送消息?所有教程都创建了依赖于 COMMAND 的命令,以使机器人“回复”您。我希望机器人成为发送第一条消息的人,并回读我的回复并采取相应的行动。
我目前正在使用 discord.js 节点库 (https://discord.js.org/)。
这可能吗?
【问题讨论】:
【参考方案1】:按名称从通道缓存中获取通道列表,并将error
event 的事件侦听器添加到窗口。当检测到错误时,发送消息到channel:
var client = new Discord.Client();
var channel = client.channels.get('name', nameOfChannel); // or client.channels.get("the channel id")
window.addEventListener('onError', function(e)
channel.send(e.error.message) // or client.sendMessage(channel, e.error.message) in older versions;
);
【讨论】:
@GalAppelbaum 应该是channel.sendMessage()
,其中channel
应该是您的目标频道,因为client
是机器人本身。而且,这是可能的。 Ori Drori 在这里所做的是,它使机器人仅在检测到错误时首先向目标通道发送消息。您显然可以用其他一些事件处理程序替换它。 (例如:让它在机器人登录时发送一条消息,或者让它在新用户进入服务器时发送一条消息。)
@GalAppelbaum - 抱歉。我使用的是旧版本,API 有所改变。我已经更新了新版本的答案。 channel
变量未定义,因为客户端找不到通道。尝试通过 id 搜索频道。正如文钦所说,我将它包装在一个错误处理程序中,因为您想在错误时发送消息。您可以在任何地方调用它。
jsfiddle 不起作用,因为它不能要求 discordjs,所以它是不相关的。 未定义的错误是因为找不到频道,它返回undefined
。创建一个新频道,然后尝试在频道集合中找到它。
@GalAppelbaum 我建议您在onReady
事件处理程序中执行var channel = client.channels.get('name', nameOfChannel);
。如您所知,使机器人登录不和谐需要时间。因此,在机器人准备好并登录之前,尝试执行 client.channels...
将始终返回 undefined,因为您告诉机器人即使尚未登录,也要找到一个频道。因此?确保需要client
(或通常是机器人)来获取频道、用户等的东西总是在机器人准备好之后完成。
@GalAppelbaum - 你成功地让它工作了吗?您需要添加/更改什么?以上是关于Discord Bot 无需命令即可发送消息的主要内容,如果未能解决你的问题,请参考以下文章
Discord BOT python,如何在特定用户编写命令时发送消息