Seite 1 von 1

IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Samstag 29. Mai 2010, 21:48
von Costi
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

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Samstag 29. Mai 2010, 22:50
von Trundle
Geraten: `user` ist ein String der Form "nick!ident@hostmask" und `self.msg()` will nur den Nick haben.

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Samstag 29. Mai 2010, 23:09
von Costi
nope.....
aber gute idee

EDIT:
jetst habe ich es:
der user ist alles vor dem "!"

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Sonntag 30. Mai 2010, 15:49
von Dav1d
unbedingt die RFCs lesen.

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

dann gibt es noch ein paar zu ctcp und dcc

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Donnerstag 23. September 2010, 14:34
von Py-Prog
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.)

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Donnerstag 23. September 2010, 14:53
von Dav1d
Für twisted brauchst du kein "mh_python". Außerdem gibt es twisted nicht für Python 3...

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Freitag 24. September 2010, 19:39
von Py-Prog
Lass mich raten ich kann das alles vergessen?

//EDIT: 200 Beitrag

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Freitag 24. September 2010, 19:47
von Dav1d
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

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Freitag 24. September 2010, 19:57
von Py-Prog
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.

Re: IRC Client mit Twisted .sendmsg funzt nicht?

Verfasst: Freitag 24. September 2010, 21:07
von Dav1d
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)