如何在Node.js中使用websocket制作乒乓球不和谐机器人?

时间:2019-06-16 12:34:52

标签: node.js websocket discord

我正在尝试在Nodejs中制作一个简单的乒乓discord机器人,而没有像Nodejs中的discord.js这样的库

我认为将websockets与discord的其余api一起使用是最好的解决方案,但我找不到任何帮助或任何代码示例来实现

我找到了这门课程:https://courses.cs.washington.edu/courses/cse154/17au/exploration/websockets/slides.html#/ 有了这个我无法理解的“解决方案”:https://courses.cs.washington.edu/courses/cse154/17au/exploration/websockets/solution/

这是该课程的摘录:

const BOT_TOKEN = "xxx";

// Discord Gateway url
const GATEWAY_URL = "wss://gateway.discord.gg/?v=6&encoding=json";

// Websocket object
let ws = null;

connect();

// connect to gateway
function connect() {
    ws = new WebSocket(GATEWAY_URL); // opens the websocket connection and creates WS object
    ws.onmessage = messageHandler; // on message event
    ws.onclose = connect; // reopen websockets when closed by discord
}

我想做的事情可以简单地使用discord.js来完成:

const Discord = require('discord.js');
const bot = new Discord.Client();

bot.on('ready', function () {
  console.log("Connected !")
})

bot.on('message', message => {
  if (message.content === 'ping') {
    message.reply('pong !')
  }
})

bot.login(token)

请帮忙吗?

1 个答案:

答案 0 :(得分:1)

我是提供此演讲的人。虽然讲课代码确实与Discord进行了交互,但这并不是最理想的方法。我个人建议使用discord.js创建可以响应您ping的机器人。

作为参考,我在课堂上演示的演讲旨在展示websocket的功能。它在浏览器中执行,而不是在node.js的帮助下执行。

在后台,discord.js很好地处理了与Discord websocket网关的连接。它响应诸如心跳之类的事件,并确保Discord网关不会从不活动状态启动客户端。我在演讲中演示的代码一次只能运行约30秒钟,然后才能从Discord启动以使其处于非活动状态。

但是,如果您对讲座感到好奇,那么将会记录来自Spring 18的会议,并且可以here观看。

希望有帮助!