使用NodeJS代码和SlackAPI进行开发以创建PFBot
最近我有一个关于Slack Bot的想法,它可以过滤用户所说的内容。 I.E用户说(一个坏词)。 PFBot会看到该消息,并根据该单词的长度将单词更改为“@#%$&”。
现在我对此很新,但我知道需要发生什么。
- 机器人需要阅读消息。
- 机器人会将该消息与坏词列表进行比较。
- 如果机器人找到一个,则过滤消息。 (把这个词改成“@#%$”。
- 带有过滤后的单词的新邮件将被重新发布为该用户。
我开始研究它,但由于我是Slack API和NodeJS的新手,我遇到了一个rode块,我不知道如何让它工作。
我的第一个具体问题是:我找不到让Bot读取聊天中发布的新消息的方法。
这是我的代码: / hears.js文件感兴趣。这就是魔术发生的地方。或者只是看这里>
var fs = require('fs');
var path = require('path');
var readStream = fs.createReadStream(path.join(__dirname,
'../profanity-filter') + '/swears.txt', 'utf8');
var data = '';
readStream.on('data', function(chunk) {
data += chunk;
}).on('end', function() {
console.log(data);
});
module.exports = function(controller) {
controller.hears(['^hello$'], 'direct_message,direct_mention', function(bot, message) {
bot.reply(message, "Hi there, you're on workspace: " + message.team)
});
controller.hears([data], 'direct_message,direct_mention', function(bot, message) {
var filter = require('../profanity-filter/lib/filter.js');
filter.setReplacementMethod('grawlix');
filter.setGrawlixChars(['!', '@', '#', '$', '%', '&']);
var thing = filter.clean(data);
bot.reply(message, "The bad word is now: " + thing)
});
};
我还在网上为NodeJS找到了一个过滤单词的实用工具。那是在Profanity-Filter文件夹中。您将对Profanity-Filter / lib / filter.js感兴趣。
作为一个新的编码器,我会喜欢这方面的指导。
感谢您提供任何建议!
〜有线的兄弟
回答如下:获取新消息
要获取新消息,您需要为机器人启用events。一旦启用,您的机器人将自动接收每条新消息,该消息将发送到您的机器人用户所属的频道。
我自己从未使用过botkit,但显然你可以查看文档here(#6),了解如何为botkit启用事件。
消除亵渎
对我来说,改变来自其他用户的消息是不可能的。有chat.udpate,它更新消息。但这只适用于您自己的消息。
相反,您可以使用chat.delete删除其他用户的消息,其中包含亵渎(并告知用户有关他的违规行为的直接消息)。