discord.js发送预定的消息

时间:2017-11-29 08:22:57

标签: javascript node.js discord discord.js

您好我刚开始使用Javascript和Node.js,所以我真的不知道该怎么做。请耐心等待。谢谢!

所以我在我的物理服务器上托管了一个node.js.我想创建一个Discord Bot,它在我的服务器上发送特定时间的每日消息,例如,我想每天早上8点向一个频道发送消息说“早上好”。我该怎么做?

目前,我只有这个代码来ping机器人(和服务器)

/*
 A ping pong bot, whenever you send "ping", it replies "pong".
*/

// Import the discord.js module
const Discord = require('discord.js');

// Create an instance of a Discord client
const client = new Discord.Client();

// The token of your bot - https://discordapp.com/developers/applications/me
const token = 'your bot token here';

// The ready event is vital, it means that your bot will only start reacting to information
// from Discord _after_ ready is emitted
client.on('ready', () => {
  console.log('I am ready!');
});

// Create an event listener for messages
client.on('message', message => {
  // If the message is "ping"
  if (message.content === 'ping') {
    // Send "pong" to the same channel
    message.channel.send('pong');
  }
});

// Log our bot in
client.login(token);

另外,我如何循环此代码以确保它每天发送一条消息?提前致谢。

1 个答案:

答案 0 :(得分:2)

所以有一个答案:

有两种方法可以做到这一点, cron (或不同平台上的其他内容)和 setInterval

1)Cron

使用以下内容创建一个新文件var POSTS_URL= 'http://localhost:8080/get_articles'; var STATUS_OK = 200 PostModel.loadAll = function(callback) { var postRequest = new XMLHttpRequest() postRequest.addEventListener('load', function() { if (postRequest.status === STATUS_OK) { var posts = JSON.parse(postRequest.responseText) callback(null, posts) } else { callback(postRequest.responseText) } }) console.log("loading the function") postRequest.open('GET', POSTS_URL + '?user_id=' + 'mchang') postRequest.send() };

goodmorning.js

(编辑所有需要的值:token,guildid和channelid)
并且每天早上8点添加一个cronjob 此脚本将尝试登录Discord,并在成功登录后继续查找公会和频道,然后发送消息,最后注销(const Discord = require('discord.js'); const client = new Discord.Client(); client.login("token").then(() => { console.log("I am ready"); var guild = client.guilds.get('guildid'); if(guild && guild.channels.get('channelid')){ guild.channels.get('channelid').send("Good Morning").then(() => client.destroy()); } else { console.log("nope"); //if the bot doesn't have guild with the id guildid // or if the guild doesn't have the channel with id channelid } client.destroy(); }); )。如果没有找到公会或频道,只需简单地销毁。

2)setInterval

第一个问题是你需要在你希望代码运行的时间启动脚本,或者获取一个setTimeout来启动setInterval来反复重复代码。
未经测试但应该可能需要进行一些调整:

client.destroy()

我肯定会选择 cron 选项,不要求你让这个过程一直在运行(除非你已经有了)