Simon Szustkowski

Ein Blog über alles, was mir gerade so durch den Kopf geht

Jan 28, 2013

Twitter List Broadcast Bot

Twitter-Nutzer kennen das Problem. Wenn man mehrere User in einem Tweet mentionen möchte, wird der Platz, der für die eigentliche Nachricht als Nutzlast übergeben wird, viel zu klein. Aber dann den Tweet in “2 Tweets” aufspalten, und jeweils 50% der User mentionen, ist auch keine Lösung.
Rundmails wären eine Idee, aber wer kennt schon die Mailadressen aller Leute, mit denen er sich so auf Twitter unterhält? Eben.

Ich habe mir Gedanken gemacht, wie man das Problem lösen könnte, und habe gemerkt, dass solche “Gruppenmentions” meistens eine ziemlich homogene Gruppe sind. (Beispielsweise die ewig gleichen 5 Studis, die sich zum Mensen verabreden).

Um Platz zu sparen, könnte man da doch zB. einen Tweet an einer zentralen Stelle auflaufen lassen, der von dort aus verteilt wird. (Ja, ich weiß, dass Twitters Infrastruktur sowieso immer im Mittelpunkt steht, und das kein Multicast von User zu User ist, aber es fühlt sich halt so an.)

Ich habe also daher einen Bot geschrieben, der solche Gruppen einfach verwirklicht. (“Mailinglisten” ist der falsche Ausdruck, “Twitterlisten” sind ebenfalls was anderes, also “Gruppen”).

Der Bot hört auf @ tlbcb was eine möglichst kurze Abkürzung von “Twitter List Broadcast Bot” ist. Kurz deswegen, damit mehr Platz für die Nutzlastnachricht ist. Den Bot steuert man mit Hashtags und vier Befehlen. Die Hashtags stellen dabei gleichzeitig den Listennamen dar. Die Befehle lauten:

1234

<code class=""><span class="line">listname create - Legt eine leere Liste mit eben diesem Namen an. Falls sie schon existiert, wird darauf hingewiesen. </span><span class="line">listname delete - Löscht die Liste mit diesem Namen. Sie muss dafür leer sein, darf also keine Abonnenten haben. </span><span class="line">listname add - Abonniert die Liste mit eben diesem Namen mit dem Account, von dem der Befehl abgeschickt wurde. </span><span class="line">listname remove - Entfernt das "Abo" für diese Liste.</span>

Als Listennamen sind alle Werte gültig, die auch einen Hashtag ergeben würden, d.h. der Name muss mit einem # beginnen, darf alphanumerische Zeichen beinhalten, aber keine Whitespaces.

Wenn man nun eine Liste anschreiben will, mentioned man ebenfalls den Bot, mit “#listname nachricht”. Der Bot nimmt dann die Nachricht entgegen, und leitet sie an alle Abonnenten der Liste weiter.

Ihr seht, das ist alles sehr minimalistisch gehalten. So soll es auch sein. Beim Anlegen einer Liste empfiehlt es sich, ebenfalls einen kurzen Namen zu wählen.

Falls der Listenname mit einem Trending Topic übereinstimmen sollte, ist das kein Problem, weil der Bot direkt gementioned werden muss, damit er aktiv wird. Die Tweets der Liste werden zwar in die Suche nach dem TT auftauchen, aber das sollte kein Problem darstellen.

Momentan ist der Bot noch ganz simpel per Crontab am Leben gehalten, und auch andere Sachen sind noch erst sehr rudimentär vorhanden. Ich wollte hier aber wie immer Release Often, Release Early machen. Ich bin mal gespannt, ob sich sowas überhaupt bewährt, ob das alles machbar ist mit dem API-Limit, was Twitter vorschreibt, usw. usw.

Ich freue mich daher über eure Rückmeldung, die ihr in den Kommentaren hinterlassen könnt. Alternativ könnt ihr mir auch eine Mail schreiben, mich direkt antwittern, oder den #dev Channel joinen. Viel Spaß.