如何使用命令示例使我的机器人ping一个人:!吃@我想要的用户,机器人:@用户已被吃掉

时间:2020-07-30 22:08:21

标签: discord.js

我想执行例如eat之类的命令,而我想进行机器人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!')
        }
    };
}

2 个答案:

答案 0 :(得分:2)

我做了一些更改:

  • 我添加了一个全局prefix变量,以便可以轻松更改前缀。
  • 我添加了检查以确保如果消息是由漫游器发送的或者不是以前缀开头的,函数将退出。
  • 我添加了一些代码以将消息分为命令和参数。
  • 我已将if语句替换为switch语句。

我强烈建议您阅读Discord.js guide,因为它非常适合初学者,并且可以使您编写比此答案更好的代码。此答案中的许多代码均来自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!`);

参考

答案 1 :(得分:0)

<@ $ {message.member.id}>这将仅使用(``)而不是('')ping邮件的作者,并将ping作者