nicojensen.de/_posts/2015-04-14-twitter-bot-und-die-hashtag-problematik.md

41 lines
2 KiB
Markdown
Raw Permalink Normal View History

---
layout: post
title: Twitter Bot und die Hashtag Problematik
---
Beim Nutzen [des Bots](https://www.nicojensen.de/2015/04/14/twitter_ebooks-bot/), fiel mir auf, dass dieser auch Hashtags benutzt. Ist ja auch klar, denn der Bot erstellt neue Tweets aus Wörtern von alten Tweets. Und da in diesen auch Hashtags verwendet worden sind, nutzt der Bot auch diese.
Das ist aber... bescheiden. Denn so werden unnötig Tweets auf Hashtags erzeugt und das muss nicht sein. Besonders dann, wenn es sich um wichtige Hashtags handeln. Leider hat der von mir [verwendete Bot](https://github.com/mispy/twitter_ebooks) selber keine Einstellungsmöglichkeit um die Nutzung von Hashtags zu untersagen. Also muss man selber ran.
Dafür gibt es zwei möglichkeiten:
- **Methode eins:** Man entfernt, über *Suchen & Ersetzen*, alle in der Archive.csv Datei vorhandene "#" und liest diese dann erneut ein.
- **Methode zwei** *(die schönere Methode)***:** Man lässt den Bot solange neue Tweets erstellen bis keine '#' mehr vorkommt. Erst dann darf er diesen Twittern.
Natürlich habe ich mit für Methode zwei entschieben. Und so habe ich dies Umgesetzt:
Die Tweets werden in der *bots.rb* erzeugt. Und dort habe ich auch die ganzen Änderungen hinzugefügt. Zuerst habe ich eine Funktion geschrieben, welche prüft ob in einem Text eine "#" vorkommt. Ganz Simpel:
```ruby
def checkTweet(tweetText)
if not tweetText =~ /#/
return true
end
return false
end
```
Damit ist auch schon die halbe Arbeit getan. Nun muss nur noch an den stellen, wo ein Tweet erzeugt wird, eine Schleife drum herum gebaut werden, welche so lange ein neuen Tweet erstellt bis die Funktion ein true zurück gibt.
```ruby
genTweet = true
while genTweet do
tweetText = model.make_statement
if checkTweet(tweetText)
genTweet = false
end
end
tweet(tweetText)
```
Fertig. Simpel oder? Die fertige bots.rb findet Ihr [hier](http://pastebin.com/cGgEzYCF).
Ihr könnt natürlich die Funktion erweitern und so dem Bot verbieten bestimmte Zeichen oder Wörter zu benutzen.