c06fb69c8b
Extract tools.config as config module
2015-11-03 16:53:49 +01:00
f39a0eac56
Refactors hooks registration
2015-11-03 16:53:49 +01:00
49d7e4ced6
Hooks: add global methods to restrict read/write on channels
2015-11-03 16:35:19 +01:00
de2e1d6216
Remove Message.receivers, long time deprecated
2015-11-03 07:26:01 +01:00
ea9829b341
Check command keywords using keyword help (passed in @hook)
2015-11-03 07:23:21 +01:00
9790954dfc
Hooks can now contain help on optional keywords
2015-11-03 07:22:01 +01:00
c6aa38147b
Include some forgotten module in reload process
2015-11-03 07:21:49 +01:00
8b4f08c5bd
Replace IRCException by IMException, as nemubot is not only built for IRC
2015-11-03 07:21:06 +01:00
ac33ceb579
Remove dead or useless code
2015-11-03 07:20:52 +01:00
f496c31d1c
Help: don't append space character before ':' when the usage key is None
2015-10-31 17:45:50 +01:00
e4d67ec345
Use Channel class when creating Server
2015-10-29 15:25:54 +01:00
2fdef0afe4
addChild should return a boolean
2015-10-28 10:55:03 +01:00
c560e13f24
Rework XML parser: part 1
...
This is the first step of the parser refactoring: here we change
the configuration, next step will change data saving.
2015-10-28 10:55:02 +01:00
92530ef1b2
Server factory takes initializer dict
2015-10-28 10:55:02 +01:00
5141a0dc17
tools/web: simplify regexp and typo
2015-10-27 23:05:38 +01:00
56c43179f3
tools/web: use core xml minidom instead of nemubot xml parser
2015-10-27 23:04:54 +01:00
7400957ac2
Bump version 4.0.dev3
2015-10-20 18:02:02 +02:00
60f7c6eea7
Place MessageTreater in context
2015-10-20 18:02:01 +02:00
4af108265b
Split and rewrite message treatment from consumers
2015-10-20 18:02:01 +02:00
a4fd04c310
Remove print unhandled in daemon mode
2015-10-20 18:02:01 +02:00
f9f54989fe
Fix logger level filtering
2015-10-20 18:02:01 +02:00
f9ee107403
SocketServer: able to connect to Unix socket
2015-10-20 18:02:01 +02:00
6c244cffa0
Server: add a socket listener, able to accept client on Unix or TCP socket
2015-10-20 18:02:00 +02:00
c94d9743dd
Add --logfile option
2015-10-20 18:02:00 +02:00
5e95f50fb6
Expand argument paths
2015-10-20 18:02:00 +02:00
e925c47961
New function requires_version if module want to restrict to some version for compatibility
2015-10-20 18:00:31 +02:00
aee8545e65
Fix exception if no owner defined
2015-10-20 18:00:25 +02:00
39b7ecdaa4
Add keyworded arguments in command received
2015-10-20 16:27:00 +02:00
a1e7a7cff8
Add test for socket printer
2015-10-20 16:25:39 +02:00
3004c01db4
tools/web: set timeout to 7 secs
2015-10-19 17:15:42 +02:00
c0ce0ca263
Server Factory: Handle URL arguments without value
2015-10-19 17:15:42 +02:00
2f1f573af2
Fix abstract name of to_server_string function
2015-10-19 17:15:42 +02:00
fd99deed1d
tools/web: colon char in URL precedes optional //
2015-10-15 19:26:09 +02:00
55e6550cb1
tools/web: factorize getNormalizedURL
2015-10-13 16:23:55 +02:00
68e357d037
Initialize an empty module configuration if it has any (sentinel value)
2015-10-13 16:23:35 +02:00
20105e7d98
tools/web: add a URL normalizer function
2015-10-12 13:10:58 +02:00
7102e08000
tools/feed: hardened parser
2015-10-10 23:20:52 +02:00
04dcf07fb2
tools/web: use standard unescape instead of custom function when available
2015-10-09 17:56:34 +02:00
fd8567c60c
Fix module unload and reload
2015-10-08 18:28:49 +02:00
Max
c55e66dd70
[tools/web] Add header param to getContentUrl()
...
Add the possibility to specify headers when querying websites.
2015-10-08 02:47:42 +01:00
684806baaf
Help command: skip discovery of command without name
2015-10-07 18:22:01 +02:00
ff2911dbd3
Add a subtreat method in modulecontext
...
This feature allows module to call the message treatment process on a crafted message
2015-10-07 18:22:01 +02:00
7970fca93a
Use with section for locking threadsafe region (instead of raw calls to acquire/release)
2015-09-28 17:21:03 +02:00
080ab9a626
Fix bad event behaviour: if an event ends in less than 6 seconds, it was executed in the event creator thread (blocking it until the event end)
2015-09-28 17:20:45 +02:00
59aff52ce1
Change the behaviour of send_response in module
2015-09-28 12:45:11 +02:00
283b0d006e
Add a new builtin: !echo
2015-09-28 12:45:10 +02:00
b66d7d30ed
Accelerate shutdown
2015-09-28 12:27:23 +02:00
f66ed07496
Lock select lists to avoid invalid states (particularly on closing)
2015-09-28 11:59:38 +02:00
ae7526dd96
Fix double exception when invalid file descriptor found in select
2015-09-28 11:59:37 +02:00
dda78df9d2
Add new action queue, synchronized with main thread for prompt like actions (conf loading, exit, ...)
2015-09-28 11:59:37 +02:00
3cfbfd96b0
Let main thread manage consumer threads
2015-09-28 11:59:37 +02:00
a4f4bb799c
Extract atom from networking module to core
2015-09-28 11:53:29 +02:00
4cb8b0f1a6
Improve help
...
On hook declaration, we can now add a help and/or a help_usage argument
to provide a simple way to the user to be informed.
For example:
```python
@hook("cmd_hook", "news", help_usage={"URL": "Display the latests news from a given URL"})
def cmd_news(msg):
[...]
```
will be displayed on !help !news as:
> Usage for command !news from module news: !news URL: Display the latests news from a given URL
Or for module commands help:
```python
@hook("cmd_hook", "news", help="display latests news")
def cmd_news(msg):
[...]
```
will be displayed on !help mymodule (assuming this hook is in the
module named mymodule) as:
> Available commands for module news: news: display latests news
Obviously, both `help` and `help_usage` can be present. If `help_usage`
doesn't exist, help on usage will display the content of help.
2015-09-24 11:29:51 +02:00
3c51b1f03b
Add assertion on class initialization
2015-09-24 11:29:49 +02:00
ecd9457691
Help: display on the right place, not always to private conversation
2015-09-24 11:29:49 +02:00
d5f07ec338
Display a basic error to IM user on uncatched exception
2015-09-24 11:29:47 +02:00
760da8ef61
tools.web: don't try to striphtml content that is not str or buffer
2015-09-24 11:29:47 +02:00
9b2bc27374
tools.web: restore Python3.3 behavior: don't check server certificate
2015-09-24 11:29:46 +02:00
8988dd0d41
striphtml: also convert ´ and collapse multiple space, as HTML display do
2015-09-24 11:29:46 +02:00
9fa8902f1a
Invalid fd are < 0, not only -1
2015-09-24 11:29:46 +02:00
beeb5573e1
Define class variables in __init__
2015-09-24 11:29:45 +02:00
9686f36522
Add a function to guess the closest word for a miss input
2015-09-24 11:29:44 +02:00
e837f9c8e5
Improve formating of size function and test it
2015-09-24 11:29:43 +02:00
2b0593a51e
Add tool to calculate string distance
2015-09-23 18:06:21 +02:00
c27540eb87
web: reduce timeout from 15 to 7 seconds
2015-08-26 12:18:23 +02:00
88a8e0fe59
web: can make POST request
2015-08-26 12:18:23 +02:00
0208a5d552
Allow socket to print messages
2015-08-26 12:18:23 +02:00
a00c354287
Add a factory to help connecting to servers
2015-08-26 12:18:22 +02:00
d269468287
Let consumer parse the message instead of server
2015-08-26 12:18:22 +02:00
a1ac7d480d
Split server message parsing from message retrieving
2015-08-26 12:18:22 +02:00
787a5fd3da
Web tool raise more IRCException
2015-08-26 12:17:21 +02:00
000c67e45e
Can return Response in help_full function
2015-08-26 12:17:21 +02:00
ae4a303554
Fix #74
2015-08-26 12:17:21 +02:00
26515677b8
Don't add new event after main thread stop
2015-08-26 12:17:12 +02:00
92895a7b1d
XML parser: perform atomic save by moving a temporary file after the serialization
2015-06-24 20:06:01 +02:00
c7706bfc97
XML datastore: load will now automatically try to load backup
2015-06-24 20:06:00 +02:00
ab2eb405ca
XML datastore: add file rotation for backup purpose
2015-06-24 20:05:59 +02:00
9cf4b9becb
Fix bot close
...
Tell consumer to stop their work
Avoid error when select on closed fd
2015-06-24 20:05:56 +02:00
f4a80e0fda
New function in ModuleContext: call_hook
2015-06-24 20:05:54 +02:00
c86031ea32
Can use print with non string
2015-06-24 20:05:53 +02:00
c1858fff3a
Catch exception during module loading: just skip the module registration
2015-06-03 18:01:50 +02:00
fc500bc853
Tools.Web: fix charset detection on webpages
2015-06-03 15:30:26 +02:00
500e3a6e01
Compatibly with Python 3.4
2015-05-26 12:33:28 +02:00
fc1bc135df
Importer: now compatible with Python 3.4
2015-05-26 12:33:16 +02:00
40ff3d6eda
Socket connection can now be made in IPv6
2015-05-25 16:44:30 +02:00
0fb58f0ff2
Use expat parser instead of SAX to parse XML files
2015-05-25 16:44:30 +02:00
0f2f14ddda
XML datastore: new directory locking procedure
...
This new procedure use fcntl functions to lock the file during the
life of the datastore instance.
Now, locked directory error is not displayed if if nemubot is not
correctly closed.
2015-05-25 16:44:30 +02:00
2644d1bc02
[xmlparser] Fix date extraction when using old format
2015-05-25 16:44:29 +02:00
8bcceb641f
Add a logger to module context on init
2015-05-25 16:44:29 +02:00
002f2463a3
Extract hooks
2015-05-25 16:44:28 +02:00
c8d495d508
Split messages class into multiple files
2015-05-25 16:44:27 +02:00
57bbca4e7a
Raise an exception when unable to open datastore, instead of returning False
2015-05-25 16:44:27 +02:00
1b9395ca37
Doc
2015-05-25 16:44:27 +02:00
418ff4f519
Datastore: add a method to create a new empty tree
2015-05-25 16:44:26 +02:00
4d7d1ccab2
Add unittest for IRCMessage
2015-05-25 16:44:26 +02:00
c984493c79
Place events to a separate directory
2015-05-25 16:44:25 +02:00
06bc0a7693
IRC: allow empty host as ZNC seems to send empty one sometimes
2015-05-25 16:44:25 +02:00
806ff1d4a0
Move main code to __main__.py
2015-05-25 16:44:24 +02:00
e588c30044
Optimize imports
2015-05-25 16:44:16 +02:00
2e7a4ad132
Save timestamp in UTC format
2015-02-18 01:48:02 +01:00
dacb618069
Increasing version number due to significant changes
2015-02-13 12:58:45 +01:00
1f5364c387
Reduce importance of importer; new tiny context for each module, instead of having entire bot context
2015-02-11 18:11:57 +01:00
bafc14bd79
add_server can now be used before context start
2015-02-10 00:42:38 +01:00
f66d724d40
Introducing data stores
2015-02-10 00:30:04 +01:00
e7fd7c5ec4
Arrange IRC server construction
...
reorder constructor argument to a more logical order
on_connect can be a simple string or a callable
2015-02-09 23:07:30 +01:00
55b1eb5075
Allow data_path to be None (don't load or save data)
2015-02-09 17:31:32 +01:00
e7d37991b3
Allow print and print_debug with multiple arguments
2015-01-22 17:18:49 +01:00
2b9c810e88
Fix quit
2015-01-05 03:07:41 +01:00
38aea5dd37
Lock the data directory to avoid concurent modification of XML files
2015-01-05 02:49:21 +01:00
06c85289e0
Don't import some nemubot module automatically
2015-01-05 02:49:06 +01:00
5a6230d844
[wip] changes import to reflect new directory structure
2015-01-05 02:48:49 +01:00
41f7dc2456
[wip] move files in order to have a clean directory structure
2015-01-04 15:14:35 +01:00