Seite 1 von 1

IRC Formatierungen aus den strings entfernen

Verfasst: Donnerstag 22. Januar 2009, 21:24
von kromonos
Ich hab mir unter http://www.user-helfen-usern.de/index.p ... 179.0.html eine ircBridge für den SleekBot zusammen gebastelt .. Jetzt hab ich nur folgendes Problem:

Sobald jemand im IRC einen Formatierten Text, wie farbe, benutzt, schmeißt es gleich den kompletten Bot raus ..
Wie kann ich nun diese Farbensonderzeichen aus den Strings entfernen, die vom IRC gesendet werden?

Verfasst: Donnerstag 22. Januar 2009, 21:44
von cofi
Wenn du weisst, welche Zeichen das sind, solltest du die leicht entfernen können. Wenn du nicht weisst, wie dann solltest du dir die Stdlib-Doku zu Strings anschaun ... oder das Snippet:

Code: Alles auswählen

In [3]: "Kill the iiiiiiiiiii!".replace("i", "")
Out[3]: 'Kll the !'
Wenns mehr sein soll wird auch translate interessant. Oder eine Schleife und eine Struktur mit den zu entfernenden Zeichen ... da sind der Phantasie keine Grenzen gesetzt ;)

Re: IRC Formatierungen aus den strings entfernen

Verfasst: Donnerstag 22. Januar 2009, 21:45
von DasIch
kromonos hat geschrieben:Sobald jemand im IRC einen Formatierten Text, wie farbe, benutzt, schmeißt es gleich den kompletten Bot raus ..
Du hast nicht zufällig eine etwas detailliertere Fehlerbeschreibung?

Re: IRC Formatierungen aus den strings entfernen

Verfasst: Donnerstag 22. Januar 2009, 21:49
von kromonos
DasIch hat geschrieben:
kromonos hat geschrieben:Sobald jemand im IRC einen Formatierten Text, wie farbe, benutzt, schmeißt es gleich den kompletten Bot raus ..
Du hast nicht zufällig eine etwas detailliertere Fehlerbeschreibung?
Traceback (most recent call last):
File "/home/kromonos/svn/sleekbot_testing/sleekxmpp/xmlstream.py", line 522, in _send
self.socket.send(xml)
File "/usr/lib/python2.6/site-packages/tlslite/TLSRecordLayer.py", line 375, in send
self.write(s)
File "/usr/lib/python2.6/site-packages/tlslite/TLSRecordLayer.py", line 238, in write
for result in self.writeAsync(s):
File "/usr/lib/python2.6/site-packages/tlslite/TLSRecordLayer.py", line 254, in writeAsync
raise ValueError()
ValueError
Mehr spuckt der Bot auch im debug mode leider nicht aus :/

Verfasst: Donnerstag 22. Januar 2009, 21:56
von cofi
Dann schau am besten mal in die angegebene Zeile und finde raus warum der ValueError geraised wird. Wobei du auch am Sympton rumdoktern kannst (siehe mein Post).

Verfasst: Donnerstag 22. Januar 2009, 22:02
von kromonos
Der ValueError erscheint bei der Ausgabe mittels:
self.bot.sendMessage(self.room, message.decode("iso8859-1")[:len(message)-2], mtype='groupchat')

Eine schleife, bei der Anzahl von Farben, die im IRC mittels #ffffff möglich sind, wäre recht .. lahm .. und 5 minuten warten, bis eine nachricht vom irc in den muc transportiert wurde ist auch nicht Sinn und zweck von der sache!! Da hilft mir .replace() auch nicht wirklich weiter -.-

Verfasst: Donnerstag 22. Januar 2009, 22:25
von cofi
Dann fang entweder die Exception ab oder entferne die Hex-Farbcodes über RegExp.

Verfasst: Samstag 24. Januar 2009, 09:09
von kromonos
Und wie mach ich das mit der RegExp? ..

Es sind ja auch nicht nur Farbcodes, sondern auch für unterstrichen, fettdruck und kursiv ..

Verfasst: Samstag 24. Januar 2009, 13:05
von Leonidas
kromonos hat geschrieben:Und wie mach ich das mit der RegExp? ..
Wie sehen denn die Farbcodes aus?
kromonos hat geschrieben:Es sind ja auch nicht nur Farbcodes, sondern auch für unterstrichen, fettdruck und kursiv ..
Die laufen afair auch über so Codes.

Verfasst: Samstag 24. Januar 2009, 13:48
von kromonos
Leonidas hat geschrieben:
kromonos hat geschrieben:Und wie mach ich das mit der RegExp? ..
Wie sehen denn die Farbcodes aus?
Wenn ich das nur wüßte -.-

Verfasst: Samstag 24. Januar 2009, 14:08
von Leonidas
kromonos hat geschrieben:Wenn ich das nur wüßte -.-
Lies sie doch einfach vom socket aus, ggf. schreiben IRC-Clients sie auch unverändert in Logdateien.

Verfasst: Samstag 24. Januar 2009, 14:47
von Darii
http://www.mirc.com/help/color.txt , wobei ^C "\x03" ist.