我正在尝试制作一个小巧的自动程序来删除用户在文本通道中发布的消息(如果它们以某些特定字符开头)。这是代码:
var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
//configure logger session
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, { colorize: true });
logger.level = 'debug';
//inizialize 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) {
var msg = message.content;
if(message.author.bot) return;
if(message.channel.id === 'CHANNEL ID')
if(!msg.startsWith('!') && !msg.startsWith('gs.')) {
message.delete();
message.reply('In questo canale sono ammessi solo comandi per i' +
' bot,riprova sul canale "generale"')
.then(d_msg => { d_msg.delete(7000); })
}
});
在这里,我用 CHANNEL ID 替换了真实的频道ID,只是为了确保不会泄露可能的敏感数据。
答案 0 :(得分:0)
删除并回复以“!”开头的邮件或“ gs”。
bot.on('message', function(user, userID, channelID, message, evt) {
if (message.author.bot || message.channel.id !== 'CHANNEL ID') return;
const msg = message.content;
const msgUnwanted = msg.match(/^!/) || msg.match(/^gs\./);
if (msgUnwanted) {
message
.delete(2000)
.then(msg => console.log(`Deleted message from ${msg.author.username}`))
.catch(console.error);
message
.reply(`In questo canale sono ammessi solo comandi per i bot,riprova sul canale "generale"`)
.then(sent => {
sent
.delete(2000)
.then(msg => console.log(`Deleted message from ${msg.author.username}`))
.catch(console.error);
});
}
});