~certify-web-dev/twisted/certify-trunk

« back to all changes in this revision

Viewing changes to twisted/words/botbot.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2006-01-16 19:56:10 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20060116195610-ykmxbia4mnnod9o2
Tags: 2.1.0-0ubuntu2
debian/copyright: Include copyright for python 2.3; some 2.3 files
are included in the upstream tarball, but not in the binary packages.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
# System Imports
3
 
import string
4
 
 
5
 
# Twisted Imports
6
 
from twisted.words.service import WordsClient
7
 
from twisted.python.failure import Failure
8
 
from twisted.python import log, plugin as oldplugin
9
 
from twisted import plugin as newplugin
10
 
 
11
 
from zope.interface import Interface
12
 
 
13
 
class IBotBot(Interface):
14
 
    def createBot():
15
 
        """Create a bot... bot.
16
 
 
17
 
        No one uses this code, who cares what this method does.
18
 
        """
19
 
 
20
 
class BotBot(WordsClient):
21
 
 
22
 
    ## possibly generalizeable stuff
23
 
 
24
 
    def receiveDirectMessage(self, senderName, messageText, metadata=None):
25
 
        cmdline = string.split(messageText, ' ', 1)
26
 
        if len(cmdline) == 1:
27
 
            cmd, arg = cmdline[0], ''
28
 
        else:
29
 
            cmd, arg = cmdline
30
 
        try:
31
 
            getattr(self, "bot_%s" % cmd)(senderName, arg, metadata)
32
 
        except:
33
 
            f = Failure()
34
 
            self.voice.directMessage(senderName, f.getBriefTraceback())
35
 
 
36
 
    ### utility bot commands
37
 
 
38
 
    def bot_rebuild(self, sender, message, metadata):
39
 
        self.loadBotList()
40
 
        from twisted.words import botbot
41
 
        from twisted.python.rebuild import rebuild
42
 
        from twisted.python.reflect import namedModule
43
 
        if message:
44
 
            rebuild(namedModule(message))
45
 
        else:
46
 
            rebuild(botbot)
47
 
 
48
 
    def bot_blowup(self, sender, message, metadata):
49
 
        self.voice.directMessage(sender, "I am blowing up.")
50
 
        raise Exception("Kaboom!")
51
 
 
52
 
    ## setup stuff
53
 
 
54
 
    def setupBot(self, voice):
55
 
        self.voice = voice
56
 
        self.loadBotList()
57
 
 
58
 
    def loadBotList(self):
59
 
        botTypes = {}
60
 
 
61
 
        botTypeList = newplugin.getPlugIns(IBotBot)
62
 
        for bott in botTypeList:
63
 
            botTypes[bott.botType] = bott
64
 
 
65
 
        botTypeList = oldplugin.getPlugIns("twisted.words.bot")
66
 
        for bott in botTypeList:
67
 
            botTypes[bott.botType] = bott.load()
68
 
 
69
 
        self.botTypes = botTypes
70
 
 
71
 
    ### botbot bot commands
72
 
 
73
 
    def bot_tlist(self, sender, message, metadata):
74
 
        self.voice.directMessage(sender,
75
 
                                 string.join(self.botTypes.keys(), " "))
76
 
 
77
 
    def bot_list(self, sender, message, metadata):
78
 
        self.voice.directMessage(sender, "Bot List")
79
 
        log.msg('starting bot list')
80
 
        import traceback
81
 
        try:
82
 
            for bot in self.voice.service.bots:
83
 
                self.voice.directMessage(sender, " - %s" % bot.voice.perspectiveName)
84
 
        except:
85
 
            traceback.print_exc(file=log.logfile)
86
 
        log.msg('finished bot list')
87
 
        self.voice.directMessage(sender, "End of Bot List")
88
 
        log.msg('finished')
89
 
 
90
 
    def bot_new(self, sender, message, metadata):
91
 
        bottype, botname = string.split(message, ' ', 1)
92
 
        self.voice.service.addBot(botname, self.botTypes[bottype].createBot())
93
 
        self.voice.directMessage(sender, "Bot Created!")
94
 
 
95
 
def createBot():
96
 
    return BotBot()