2017-12-26 3 views
0

Kürzlich hatte ich eine Idee für einen Slack Bot, der filtern würde, was ein Benutzer sagt. I.E User sagt (ein schlechtes Wort). PFBot würde diese Nachricht sehen und das Wort in "@ #% $ &" ändern, je nachdem wie lange das Wort ist.Entwickeln mit NodeJS-Code und SlackAPI zum Erstellen von PFBot

Jetzt bin ich ziemlich neu, aber ich wusste, was passieren musste.

  1. Der Bot müsste die Nachricht lesen.
  2. Der Bot würde diese Nachricht mit einer Liste schlechter Wörter vergleichen.
  3. Wenn der Bot einen findet, wird die Nachricht gefiltert. (Drehen Sie das Wort in „@ #% $“.
  4. Die neue Nachricht mit gefiltertem Worten würde als dieser Benutzer Dritten zugänglich gemacht werden.

ich arbeite daran begonnen, aber da ich bin mit dem Slack-API und NodeJS ich treffe einen rode Block und ich habe keine Ahnung, wie um es arbeitet

Mein erstes spezifisches Problem ist:.. ich kann nicht einen Weg für die Bot finden sie eine neue Nachricht im Chat geschrieben lesen

Hier ist mein Code: https://github.com/wiredbrother/Slack-PFBot Sie werden interessiert sein die Datei Skills/hears.js. Dort passiert die Magie. Oder schau einfach hier>

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) 
}); 

}; 

Ich fand auch ein Dienstprogramm online für NodeJS, das Wörter filtert. Das ist im Profanity-Filter-Ordner. Sie würden sich für Profanity-Filter/lib/filter.js interessieren.

Ich würde gerne einige Hinweise auf diese als ein neuer Coder.

Vielen Dank für einen Hinweis, den Sie geben können!

~ wiredbrother

Antwort

0

Erste neue Nachrichten

Um neue Nachrichten zu erhalten Sie benötigen für Ihren Bot zu ermöglichen. Sobald aktiviert, erhalten Ihre Bots automatisch jede neue Nachricht, die an einen Kanal gesendet wird, zu dem Ihr Bot-Benutzer gehört.

Ich habe selbst nie Botkit verwendet, aber anscheinend können Sie in der Dokumentation here (# 6) nachschauen, wie Ereignisse für das Botkit aktiviert werden.

Profanität Entfernen

Wissen Für mich ist nicht möglich, die Nachricht von einem anderen Benutzer zu ändern. Es gibt chat.udpate, die Nachrichten aktualisiert. Aber das funktioniert nur für deine eigenen Nachrichten.

Stattdessen können Sie Nachrichten von anderen Benutzern mit chat.delete löschen, die Obszönitäten enthalten (und den Benutzer mit einer direkten Nachricht über seine Übertretung informieren).

+0

Vielen Dank für Ihre Antwort. Was den Teil der Obszönitäten anbetrifft, dachte ich nicht daran, diese Nachricht zu aktualisieren, sondern sie zu löschen und sie dann mit dem gefilterten Inhalt als Benutzer erneut zu veröffentlichen. Das würde diesen Teil der Slack-API https://api.slack.com/methods/chat verwenden.postMessage und post als Benutzer. Obwohl ich keine Ahnung habe, wie ich das in meinen Code einbauen kann ... Vielen Dank für Ihre Hilfe bis jetzt! – wiredbrother

+0

np. Leider ist es nicht wirklich möglich, eine Nachricht als ein anderer Benutzer mit der Slack API neu zu veröffentlichen. Sie können den Nutzernamen und das Symbol "fälschen", aber es wird immer noch das "App" -Tag neben der Nachricht angezeigt, um anzuzeigen, dass es von einem Bot stammt. –

+0

Nun, könnte ich es machen, wo es die Nachricht löscht und sendet eine ätherische Nachricht, die besagt, dass ein schlechtes Wort drin war und sie diese Nachricht nicht posten können? – wiredbrother

Verwandte Themen