javascript - 如何在 JavaScript 中创建 Discord Cross 服务器中继机器人
问题描述
我一直在研究一个新的 Discord Bot,它能够将来自原始服务器的公告中继到该 bot 所在的所有其他服务器。我对编程非常陌生,所以我的想法有希望吗?我现在就发送我当前的代码。
const discord = require('discord.js');
const bot = new discord.Client();
const token = '<token>';
const PREFIX = '&';
const server;
const DChannel;
bot.on('ready', () =>{
console.log('Milsim Network Online');
server = bot.guilds.get(719415100221554688);
DChannel = server.channels.get(719424622633680906);
console.log('--------------------\n\n\nREADY: '+ new Date() +'\n\n\n--------------------');
})
bot.on('message', message=> {
let args = message.content.substring(PREFIX.length).split(" "); // Single Argument Commands //
switch(args[0]) {
case 'ping':
message.channel.send('pong!');
break;
case 'UMA':
message.channel.send('website link here');
break;
case 'info':
message.channel.send('Please select: **PMC**, **MILSIM**, or **UMA** to learn more about them');
break;
}
if (message.channel.type.toLowerCase() == 'dm' || message.channel.type.toLowerCase() == 'group') {
var embed = new Discord.RichEmbed()
.setAuthor(message.author.username, message.author.avatarURL)
.setDescription(message.content)
.setTimestamp(new Date())
.setColor('#C735D4');
DChannel.send(embed);
}
})
bot.login (token);
我知道它可能看起来非常杂乱无章,对此我深表歉意。
解决方案
这是朝着所需方向迈出的一步。我的示例获取其余消息内容(不包括命令)并将其发送到客户端所在的每个公会的第一个频道。请注意,“第一个”频道表示频道列表中最低的一个。
let announcement = args.slice(1).join(' ');
bot.guilds.cache.forEach(guild => {
let channel = guild.channels.cache.first();
channel.send(announcement);
});
看来你没有使用 discord.js v12,所以上面的代码只有在你删除所有实例时才有效cache
,例如bot.guilds.cache.forEach()
-->bot.guilds.forEach()
推荐阅读
- excel - Excel 2 合 1
- css - 没有值的自定义 css 属性
- asp.net - 如何为 ASP.NET 中的现有对象添加值
- oracle - 您查询什么表/视图来获取 Oracle Fusion 中的库存地址?
- python - 计算深度图时遇到的问题
- javascript - 如果菜单长度超过Angular / Javascript中菜单类别的菜单视图长度,则菜单滚动ul li在页面滚动上左右
- python - 我怎样才能在列表中只获得一些价值?
- python - IndexError:列表索引超出范围有人可以帮助我吗?
- powerpoint - 无法为 JavaScript 运行 PowerPoint 形状 API
- node.js - 在 Google App Engine 中运行时,Nodejs 应用程序无法连接到 Firebase 实时数据库