irc.py
author Tero Marttila <terom@paivola.fi>
Thu, 20 Mar 2008 18:47:58 +0200
changeset 5 8e7493df9f52
parent 4 34d7897bd0f5
child 6 614161f85d9b
permissions -rw-r--r--
dos2unix on buffer.py

committer: Tero Marttila <terom@paivola.fi>
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
from twisted.words.protocols import irc
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
from twisted.internet import protocol
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
     3
from twisted.python import log
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
import buffer
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
     7
HOSTNAME        = "irc.marttila.de"
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
PORT            = 6667
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
NICKNAME        = "FixBot"
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
USERNAME        = "fixme"
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    11
CHANNEL         = "#fixme-test"
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    13
class BotProtocol (irc.IRCClient, object) :
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
    """
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
        Fixme IRC bot
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
    """
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    17
    
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    18
    def __init__ (self) :
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    19
        self.nickname = NICKNAME
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    20
        self.username = USERNAME
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
    # housekeeping
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
    def connectionMade (self) :
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    24
        log.msg("Connected")
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    25
        super(BotProtocol, self).connectionMade()
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    26
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    27
    def connectionLost (self, reason) :
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    28
        log.msg("Connection lost: %s" % reason)
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    29
        super(BotProtocol, self).connectionLost(reason)
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    30
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    31
    def signedOn (self) :
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    32
        log.msg("Signed on, joining channel %s" % CHANNEL)
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
        self.join(CHANNEL)
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    34
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    35
    def joined (self, channel) :
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    36
        log.msg("Joined channel %s" % channel)
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    37
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    38
        self.factory.connection = self
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
    
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
    # our actual functionality
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    41
    def send (self, msg) :
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    42
        msg = str(msg)
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    43
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    44
        if len(msg) > 480 :
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    45
            log.msg("truncating: %s" % msg)
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    46
            msg = msg[:480] + "..."
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    47
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    48
        msg = msg.replace("\n", "\\n").replace("\r", "\\r").replace("\0", "\\0")
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    49
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    50
        self.msg(CHANNEL, msg)
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
    def sendEvent (self, event) :
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    53
        self.send("[%s.%s] %s" % (event.module.name, event.type, event.msg))
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
    def moduleConnected (self, module, addr) :
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    56
        self.send("{modules.%s} connected from %s:%d, version %s" % (module.name, addr.host, addr.port, module.version))
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
4
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    58
    def moduleDisconnected (self, module, reason) :
34d7897bd0f5 logwatcher works
Tero Marttila <terom@paivola.fi>
parents: 1
diff changeset
    59
        self.send("{modules.%s} disconnected: %s" % (module.name, reason))
1
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
16d7aadc6f31 initial, modified code
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61