首页 > 解决方案 > 为初学者创建 Discord Bot

问题描述

我以前从未编写过 Discord Bot,但我熟悉 Javascript,所以我想我会试一试。我使用了这个网站Digital Trends的初学者文件,但遇到了一些问题。

我让机器人在我的服务器中运行,基本命令从“!” 至 ”?” 并且包含的​​命令“?ping”确实返回了预期的响应“Pong!”

我运行一个服务器,我们每个月都会在该服务器上启动一个视频游戏,并在讨论的过程中玩一遍,类似于读书俱乐部。所以我正在尝试创建一个频道,人们可以使用机器人命令推荐游戏,因为我不相信他们可以自己处理遵循简单的规则。

我想弄清楚的是如何去接受用户命令:

?gs "Video Game Title" "Platform"

并让机器人删除命令并重新发布为:

@user 建议平台的视频游戏标题

同时还添加了反应表情符号“”和“”以允许其他用户投票。

我不是要求任何人为我做这件事,而是简单地帮助我指出正确的方向,即如何使用 JS 使用 Discord 进行编码(如果可能的话)

这是我当前的“bot.js”代码:

var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, {
    colorize: true
});
logger.level = 'debug';
// Initialize Discord Bot
var bot = new Discord.Client({
   token: auth.token,
   autorun: true
});
bot.on('ready', function (evt) {
    logger.info('Connected');
    logger.info('Logged in as: ');
    logger.info(bot.username + ' - (' + bot.id + ')');
});
bot.on('message', function (user, userID, channelID, message, evt) {
    // Our bot needs to know if it will execute a command
    // It will listen for messages that will start with `!`
    if (message.substring(0, 1) == '?') {
        var args = message.substring(1).split(' ');
        var cmd = args[0];

        args = args.splice(1);
        switch(cmd) {
            // !ping
            case 'ping':
                bot.sendMessage({
                    to: channelID,
                    message: 'Pong!'
                });
            break;
            // Just add any case commands if you want to..
         }
     }
});

标签: javascriptdiscorddiscord.io

解决方案


args = args.splice(1);

此行不正确,args(作为字符串)没有.splice()方法。(我经常.slice()感到.split()困惑,所以这也经常发生在我身上!)

相反,使用:

args = args.split(" ").slice(1);

推荐阅读