IRC Client mit Twisted .sendmsg funzt nicht?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

hallo!

ich war echt lange nicht mehr hier...
also es geht um folgendes:
ich schreib gerade einen IRC bot, hab aber von IRC leider nicht so viel ahnung.
mit folgenden code kann ich messages, die benutzer mir schicken empfangen, aber irgendwie kriegen sie was zureuckgesendet wird nicht mit:

also hier nur die kritische stelle:

Code: Alles auswählen

	def privmsg(self, user, channel, msg):
		if user.endswith('undernet.org'): #provisorisch server konnte auch anders heisen
			print '\t', msg
		if channel == self.factory.nickname:
			print user + ': ' + msg
			reply = answer(msg)
			print reply
			print
			self.msg(user, reply)
und hier der gesamte code:

Code: Alles auswählen

import mh_python

mh_python.initbrain()

def answer(quest):
	return mh_python.doreply(quest) 



class Chatter:
	def __init__(self, nickname):
		self._nickname = nickname



from twisted.words.protocols import irc
from twisted.internet import protocol
from twisted.internet import reactor

 


class SBot(irc.IRCClient):
	def _get_nickname(self):
		return self.factory.nickname
	nickname = property(_get_nickname)

	def signedOn(self):
		self.join(self.factory.channel)
		print "Signed on as %s." % (self.nickname,)

	def joined(self, channel):
		print "Joined %s." % (channel,)

	def privmsg(self, user, channel, msg):
		if user.endswith('undernet.org'): #provisorisch server konnte auch anders heisen
			print '\t', msg
		if channel == self.factory.nickname:
			print user + ': ' + msg
			reply = answer(msg)
			print reply
			print
			self.msg(user, reply)
			
			
			
		#print user + ': ' + msg
		#reply = answer(msg)
		#print 'BOT wil send: ' + reply
		#reactor.callLater(3, lambda: self.msg(user, reply))

class SBotFactory(protocol.ClientFactory):
	protocol = SBot

	def __init__(self, channel, nickname='Sexy21Blonde'):
		self.channel = channel
		self.nickname = nickname

	def clientConnectionLost(self, connector, reason):
		print "Lost connection (%s), reconnecting." % (reason,)
		connector.connect()

	def clientConnectionFailed(self, connector, reason):
		print "Could not connect: %s" % (reason,)

if __name__ == "__main__":
	chan = 'cybersex'
	reactor.connectTCP('us.undernet.org', 6667, SBotFactory('#' + chan))
	reactor.run()



danke!

EDIT:
code tags in python tags umgeandert
cp != mv
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Geraten: `user` ist ein String der Form "nick!ident@hostmask" und `self.msg()` will nur den Nick haben.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

nope.....
aber gute idee

EDIT:
jetst habe ich es:
der user ist alles vor dem "!"
cp != mv
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

unbedingt die RFCs lesen.

RFC 1459
http://irchelp.org/irchelp/rfc/rfc.html

dann gibt es noch ein paar zu ctcp und dcc
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Wie heißt den mh_python in 3.1.1 ? (das dürfte das letzte sein was mir noch fehlt, um das skript zumlaufen zu bringen.)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Für twisted brauchst du kein "mh_python". Außerdem gibt es twisted nicht für Python 3...
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Lass mich raten ich kann das alles vergessen?

//EDIT: 200 Beitrag
Zuletzt geändert von Py-Prog am Mittwoch 29. September 2010, 16:46, insgesamt 1-mal geändert.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Mit Python 3 ja.

Ich schreibe gerade an einer IRC-lib, die allerdings noch _nicht_ richtig funktioniert: http://bitbucket.org/dav1d/irc
Das läuft mit asynchia (ja die lib von name, welche noch alpha ist).

Wenn name, eine neue Version, mit weniger bugs released, werde ich auch die "Irc-Lib" releasen.

//Edit: 800er Beitrag :D
the more they change the more they stay the same
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Dann muss ich das wohl anders hinkriegen, blos blöd dass ich mit netzwerk-programmierung nicht gut auskenne.(Das heist eigentlich garnicht.) Ein Tutorial wärhe nicht schlecht, aber bitte eins mit beispielen, und bitte nicht für fortgeschrittene, in diesem bereich natürlich.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Das ist nicht sooo schwer. Erst recht nicht für einen IRC-Clienten. Das ist sogar mit SSL- und IPv6-Support kein Problem (ich hab sowas schon geschrieben)
the more they change the more they stay the same
Antworten