forked from hgrecco/SleekBot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.txt
88 lines (55 loc) · 3.12 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
Core
====
A configuration user-interface
------------------------------
It would be useful, but not necessary, to have a simple user interface to generate the xml file. This should allow to configure the bot authentication details, and the xeps and plugins to include. The syntax can be:
runbot.py -i newconfig.xml
runbot.py --interactive newconfig.xml
A graphical user interface based on QT/Tk or a text user interface base on urwid is possible but will add more dependencies to the project which is not desirable.
Documentation and Plugin documentation
--------------------------------------
Hopefully, the number of plugins will increase. A good documentation system is necessary to track function and requirements. The documentation should be consistent across plugins and extracted from the source code. It should also be browsable in the github wiki.
Plugin configuration through the XML file
-----------------------------------------
Flexible plugin configuration so that users do not need to change the source code to adapt to their needs.
Maybe generalizing this:
http://github.com/Ekimus/SleekBot/commit/8040ddf2ad9dfacb9dca3fdad0b633d86facba8c
Internalization
---------------
It would be good to internationalize SleekBot. Switching languages in the bot is not so problematic, what is a little bit more cumbersome is to allow each user (somebody that is talking to the bot) to change the language only for himself.
Plugins
=======
Distribute
----------
Consider a set of CPU intensive commands implemented as SleekBot commands. To better distribute the load, multiple bots are created across several computers. Instead of chatting to each individual bot, the user chats with a hub that dispatch commands to worker bots. Node bots use their presence (available/busy) to indicate if they can receive new process. This infrastructure can also be used to interact with different services distributed through the network.
Hub Plugin
~~~~~~~~~~
Configuration:
<plugin name='hub' module='distribute'/>
<config token='hub1 token' />
token: is an optional string used by the hub to recognize valid workers
Commands:
- register-command [command object]
- unregister-command [command object]
- A free text parser to do the actual dispatch
[command object] is a serialized (pickled?) version of the botcmd dict.
Node Plugin
~~~~~~~~~~~
Configuration:
<plugin name='node' module='distribute'/>
<config>
<hubs>
<jid token='hub1 token'>[email protected]</jid>
<jid token='hub2 token'>[email protected]</jid>
<jid>[email protected]</jid>
</hubs>
</config>
</plugin>
on_register sends all the commands that it can process to the hubs.
It should also register itself to receive notifications when a new hub is available so it can send available commands.
Artificial Intelligence Markup Language (AIML)
----------------------------------------------
http://www.alicebot.org/aiml.html
http://en.wikipedia.org/wiki/AIML
Add a plugin that responds based on a AIML file (maybe through a free text parser). It could be based on:
http://pyaiml.sourceforge.net/