如何在discord.io中bot回复后删除用户发送的命令

时间:2021-02-05 14:57:27

标签: discord discord.js discord.io

首先,正常的 discord.js 内容在我的代码中似乎不起作用。

所以我想让用户调用命令,机器人回复并删除用户的消息,也就是调用命令。

bot.on('message', function (user, userID, channelID, message, evt) {
    if (message.substring(0, 1) == '?') {
        var args = message.substring(1).split(' ');
        var cmd = args[0];
       
        args = args.splice(1);
        switch(cmd) {
            case 'gw':
var gw = args.slice(1).join(' ');
var thumb = args[0];
let date = new Date();
            let smalldate = date.getDate() + '/' + (date.getMonth() +1) + ' | ' + date.getHours() + ':' + date.getMinutes();
               bot.sendMessage({
                    to: channelID,
                    message: `\n <@&${'806183931065401405'}>` + `\n` + `\n ? __**Giveaway**__ ?`,
  embed: {
    color: 16580705,
    footer: { 
      text: 'Started On :  ' + smalldate,
    },
    thumbnail:{
url : thumb
    },
    title: gw,
    description: 'Hosted By: ' + user,
  }
});
bot.deleteMessage(message);
         }
}
});

衷心感谢您的任何回复。

2 个答案:

答案 0 :(得分:2)

正如我在评论中所讨论的,以下是更改:

bot.on('message', message => {// arrow function
    if (message.content.startsWith(PREFIX) {
        body = message.content.slice(PREFIX.length)
        var args = message.content.substring(1).split(' ');
        var cmd = args[0];
       
        args = args.splice(1);
        switch(cmd) {
            case 'gw':
var gw = args.slice(1).join(' ');
var thumb = args[0];
let date = new Date();
            let smalldate = date.getDate() + '/' + (date.getMonth() +1) + ' | ' + date.getHours() + ':' + date.getMinutes();
               message.channel.send({
                    to: channelID,
                    message: `\n <@&${'806183931065401405'}>` + `\n` + `\n ? __**Giveaway**__ ?`,
  embed: {
    color: 16580705,
    footer: { 
      text: 'Started On :  ' + smalldate,
    },
    thumbnail:{
url : thumb
    },
    title: gw,
    description: 'Hosted By: ' + user,
  }
});
message.delete();
         }
}
});

答案 1 :(得分:1)

我为您添加了一些代码格式。

bot.on('message') 只返回 message 对象,不能添加其他变量。 对于删除初始消息,您可以使用 message.delete()

使用 Discord.js documentation :) 学习自由的方法

const Discord = require('discord.js');
const bot = new Discord.Client();
const prefix = '?';
bot.on('ready', () => {
    console.log('\x1b[32m%s\x1b[0m', `${bot.user.username} is online on ${bot.guilds.cache.size} servers!`);
});

bot.on('message', async (message) => {
    if (!message.content.startsWith(prefix)) return;
    let args = message.content.substring(prefix.length).split(' ');
    let cmd = args.shift();
    switch (cmd) {
        case 'gw':
            let gw = args.join(' ');
            let thumb = args[0];
            let date = new Date();
            let smallDate = date.getDate() + '/' + (date.getMonth() + 1) + ' | ' + date.getHours() + ':' + date.getMinutes();
            let embed = new Discord.MessageEmbed();
            embed.setDescription(`Hosted By: ${message.author}`);
            embed.setColor(16580705);
            embed.setFooter(`Started On :  ${smallDate}`); //Better use embed.setTimestamp(), because its will convert time yo user local timezone
            embed.setTitle(gw);
            await message.channel.send(`\n <@&${'806183931065401405'}>` + `\n` + `\n ? __**Giveaway**__ ?`, embed)
            await message.delete()
    }
});