我试图让我的不和谐机器人每隔几个小时向我发送一条消息,所以我知道它仍在运行。
例如:
该机器人向我发送了“仍在运行!”每两个小时给我。
这是我尝试过的一些代码,但是没有用:
client.on("ready", () => {
client.user.setActivity("a game.");
if (timeout) {
clearInterval(timeout);
}
timeout = setInterval(() => client.channels.get("<ID Retracted>").send("Still functioning!"), 7200000);
console.log("READY");
});
这是我得到的错误:
Jump to /app/index.js:26
timeout = setInterval(() => client.channels.get("<retracted id>").send("Still functioning!"), 7200000);
^
TypeError: Cannot read property 'send' of undefined
at Timeout.setInterval [as _onTimeout] (/app/index.js:26:74)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10)
答案 0 :(得分:0)
首先使用var fetchedUser = client.fetchUser(userID)
来获取用户,然后可以调用fetchedUser.createDM()
为该用户创建并获取DM频道。
另外,dmChannel
属性也可以工作,但是如果先前在漫游器和用户之间未创建DM通道,则它会返回null。
答案 1 :(得分:0)
要使DM自己仍在运行bot,可以使用此代码以指定的时间间隔使它成为DM。
首先,将您的用户ID存储为变量。对于此示例,我将其设置为 yourid 。
let yourid = client.users.get("your id")
然后为要运行的间隔创建一个函数,在此示例中,我将其命名为intervalFunc。
function intervalFunc() {
yourchannel.send("Im still running!")
}
最后但并非最不重要的一点是,按间隔运行该函数。
setInterval(intervalFunc, 40000)
})
最后,您将获得此代码。
const discord = require('discord.js');
client.on("ready", () => {
client.user.setActivity("a game.");
let yourchannel = client.users.get("your id")
function intervalFunc() {
yourchannel.send("Im still running!")
}
setInterval(intervalFunc, 40000)
})
要在特定的频道中发送消息,基本上是一样的,只有将users.get
更改为channels.get
。我将使用您的频道作为该频道的变量。
let yourchannel = client.channels.get("your id")
因此,最后您将获得此代码。
const discord = require('discord.js');
client.on("ready", () => {
client.user.setActivity("a game.");
let yourchannel = client.channels.get("your id")
function intervalFunc() {
yourchannel.send("Im still running!")
}
setInterval(intervalFunc, 7200000)
})
这些方法之所以有效,是因为您已经知道要使用哪个频道或DM频道。因此,您可以获取它们各自的ID,并告诉漫游器以一定间隔发送您的消息。希望这会有所帮助!