Seite 1 von 1
Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 12:26
von Herr Lehmann
Hallo,
ich bin gerade dabei mich mit Twisted.ircClient zu beschäftigen. Dabei möchte ich einen Bot porgrammieren, der wenn er auf einem Server connected eine Liste von Channels joint. Damit der Bot weiß, welche channel er joinen soll, brauche ich den namen des Netzwerk auf dem der Bot connected hat.
Im Modul twisted.ircClient gibt es eine Funktion
def myInfo(self, servername, version, umodes, cmodes):
Die wird aufgerufen Während der Bot auf den Server connected und gibt mir auch den korrekten Server Namen zurück.
Allerdings müsste ich auch wenn der Bot schon connected ist an diese Information kommen. An dieser Stelle vestehe ich nicht, wie das gehen soll, da ich ja die Funktion myInfo gar nicht selber aufrufen kann ohne Servername, version etc zu wissen.
Wie komme ich also beispielsweise in der Funktion def signedOn(self): an den Servernamen wo er gerade connected ist?
vielen Dank für die bisher immer äußerst kompetente Hilfe hier im Forum
Gruß
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 14:34
von Leonidas
Na in dem du den Servernamen an ein Attribut von ``self`` bindest. Das sind nun ehrlich ganz grobe Grundlagen von OOP...
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 18:46
von Herr Lehmann
Das kann sein. Ich bekomme allerdings keinen Wert. Könntest du mir einen konkreten Codeschnipsel liefern. Bitte
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 18:58
von deets
Code: Alles auswählen
def myInfo(self, servername, ...):
self.servername =servername
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 19:42
von Herr Lehmann
Das ist mir klar. Das geht auch. Aber ich brauche den Servernamen in einer anderen Methode:
Code: Alles auswählen
def signedOn(self):
for line in db.channel.filter(db.channel.server_url == $servername):
self.join(line.chan_name)
Das Problem ist, dass ich in der methode signedOn ja myInfo nicht aufrufen kann um an den server namen zu kommen weil mir die Parameter fehlen.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 20:20
von BlackJack
``$servername``!? Bist Du sicher das Du in Python programmieren willst?
Die Methode *aufzurufen* geht doch sowieso nicht. Du hast in der Methode doch aber den Servernamen an das Objekt gebunden. Und die Methode wird doch vor der `signedOn()` aufgerufen, also kannst Du in der `signedOn()` auf das Attribut zugreifen.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 21:55
von Herr Lehmann
Habs jetzt anders gelöst. Vielen dank für eure Anregungen.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Freitag 29. April 2011, 23:02
von Leonidas
Herr Lehmann hat geschrieben:Habs jetzt anders gelöst.
Wie?
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 01:02
von Herr Lehmann
Ich übergebe den server namen an die factory und kann diesen dann über self.factory.server ansprechen.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 10:09
von Leonidas
Und was ist wenn die gleiche Factory mehrere Clients produziert?
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 10:23
von Herr Lehmann
Es wird bei jeder factory ein anderer server übergeben.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 11:26
von Leonidas
Du meinst als das wär jetzt zu einfach, oder?
Code: Alles auswählen
def signedOn(self):
for line in db.channel.filter(db.channel.server_url == self.servername):
self.join(line.chan_name)
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 11:31
von sillas
[spam]
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 11:37
von Leonidas
sillas, was soll der Spam?
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 11:39
von sillas
Spam? Ich Spam nicht..Sorey
Re: Twisted: Verständnis Problem mit Events
Verfasst: Samstag 30. April 2011, 11:46
von Leonidas
Diese ewig lange, englischsprachige und ungewünschte Anleitung zu Eggdrop hat definitiv nichts mit dem Thema zu tun.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Sonntag 1. Mai 2011, 12:53
von Herr Lehmann
Leonidas hat geschrieben:Du meinst als das wär jetzt zu einfach, oder?
Code: Alles auswählen
def signedOn(self):
for line in db.channel.filter(db.channel.server_url == self.servername):
self.join(line.chan_name)
Jap. denn wenn ich ich z.b. in meiner liste irc.freenode.net stehen habe. Dann kann es ja sein das er sich aber auf den Server
kornbluth.freenode.net verbindet. Und damit stimmt der Server in der Liste nicht mehr mit dem überein den ich über self.servername bekomme.
Re: Twisted: Verständnis Problem mit Events
Verfasst: Sonntag 1. Mai 2011, 19:40
von Leonidas
Und ``myInfo`` wird "irc.freenode.net" statt dem eigentlichen Servernamen übergeben?
Re: Twisted: Verständnis Problem mit Events
Verfasst: Dienstag 3. Mai 2011, 23:35
von Herr Lehmann
myinfo wird kornbluth.freenode.net ausgeben und in meiner liste steht irc.freenode.org dann passt es nicht zusammen und macht probleme