discord.js - 如何让我的机器人通过命令示例 ping 一个人:!eat @the user i want, the bot: @the user has been eated
问题描述
我想做一个命令,例如吃,我想要机器人 ping,这是一个例子:D
bot.on('message', (message) => {
const parts = message.content.split('');
if (parts [0] == '!eat'){
if (parts [1] == 'The member that i want to be pinged by the bot') {
message.channel.send('The user that i pinged on command has been eated!')
}
};
}
解决方案
我做了一些改变:
- 我添加了一个全局
prefix
变量,以便可以轻松更改前缀。 - 我添加了检查以确保如果消息是由机器人发送的或者不是以前缀开头的则函数退出。
- 我添加了一些代码来将消息拆分为命令和参数。
- 我已将
if
声明替换为switch
声明。
我强烈建议您阅读Discord.js 指南,因为它对初学者非常友好,并且可以让您编写比此答案更好的代码。此答案中的大部分代码取自 Discord.js 指南。
const prefix = '!';
bot.on('message', (message) => {
if (message.author.bot || !message.content.startsWith(prefix)) return;
const args = message.content.slice(prefix.length).trim().split(/\s+/g);
const command = args.shift().toLowerCase();
switch (command) {
case 'eat':
const member = message.mentions.members.first();
if (!member) return message.reply('Could not find the mentioned user.');
message.channel.send(`${member.user.username} has been eaten!`);
break;
default:
message.reply(`The command \`${command}\` was not recognized`);
}
});
解释
命令前缀设置:
const prefix = '!';
如果消息由机器人发送或不以前缀开头,则函数退出:
if (message.author.bot || !message.content.startsWith(prefix)) return;
前缀从消息的开头被删除,并且消息在所有空白间隙处拆分:
const args = message.content.slice(prefix.length).trim().split(/\s+/g);
第一个参数被删除,转换为小写并存储在command
变量中:
const command = args.shift().toLowerCase();
找到第一个提到的用户:
const member = message.mentions.members.first();
如果没有提及用户,则返回警告消息:
if (!member) return message.reply('Could not find the mentioned user.');
一条消息被发送到服务器说“[用户]已经被吃掉了!” :
message.channel.send(`${member.user.username} has been eaten!`);
参考
推荐阅读
- ms-access - 根据找到的字符串使用默认值更新字段
- excel - 如何使用可重复用于计算的 ISO_4217 货币在 Excel 中格式化 csv 或 xlsx 文件中的单元格
- node.js - NodeJs从格式类型为二进制的swagger数组迭代req.files
- python - 如何从字符串中删除 [' ']
- android - Flutter 上的通用 UI 布局,适用于不同尺寸的屏幕
- angular - Angular 页面构建器/ui 构建器
- c# - 无法使用实体框架删除行
- r - 你如何让 RStudio 记住它过去使用的 R 安装?
- flutter - Flutter 动画过渡按钮
- python-3.x - 从 s3 触发的 lambda 函数获取响应