Mercurial > libervia-backend
annotate src/plugins/plugin_misc_text_commands.py @ 2109:85f3e12e984d
core (memory/cache): file caching handling, first draft:
instead of having file caching handled individually by plugins, a generic module has been added in memory.
- Cache can be global or associated to a profile. In the later case, client.cache can be used.
- Cache are managed with unique ids (which can be any unique unicode, hash uuid, or something else).
- To know if a file is in cache, getFilePath is used: if the file is in cache, its absolute path is returned, else None is returned.
- To cache a file, cacheData is used with at list the source of cache (most of time plugin import name), and unique id. The method return file opened in binary writing mode (so cacheData can - and should - be used with "with" statement).
- 2 files will be created: a metadata file (named after the unique id), and the actual file.
- each file has a end of life time, after it, the cache is invalidated and the file must be requested again.
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 05 Jan 2017 20:23:38 +0100 |
parents | ed33cd382bf9 |
children | 98672e35d2f5 |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1889
diff
changeset
|
1 #!/usr/bin/env python2 |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
4 # SàT plugin for managing text commands |
1766 | 5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
10 # (at your option) any later version. |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
15 # GNU Affero General Public License for more details. |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
600
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
771 | 20 from sat.core.i18n import _ |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
21 from sat.core.constants import Const as C |
1052
e88bff4c8b77
core (XMPP): sendMessage refactoring:
Goffi <goffi@goffi.org>
parents:
1025
diff
changeset
|
22 from sat.core import exceptions |
508
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
23 from twisted.words.protocols.jabber import jid |
921 | 24 from twisted.internet import defer |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
25 from sat.core.log import getLogger |
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
26 log = getLogger(__name__) |
1052
e88bff4c8b77
core (XMPP): sendMessage refactoring:
Goffi <goffi@goffi.org>
parents:
1025
diff
changeset
|
27 from twisted.python import failure |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
28 from collections import OrderedDict |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 |
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 PLUGIN_INFO = { |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
31 "name": "Text commands", |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
32 "import_name": C.TEXT_CMDS, |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
33 "type": "Misc", |
2055
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
34 "protocols": ["XEP-0245"], |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
35 "dependencies": [], |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
36 "main": "TextCommands", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
37 "handler": "no", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
38 "description": _("""IRC like text commands""") |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 } |
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
41 |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
42 class InvalidCommandSyntax(Exception): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
43 """Throwed while parsing @command in docstring if syntax is invalid""" |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
44 pass |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
45 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
46 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
47 CMD_KEY = "@command" |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
48 CMD_TYPES = ('group', 'one2one', 'all') |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
49 FEEDBACK_INFO_TYPE = "TEXT_CMD" |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
50 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
51 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
52 class TextCommands(object): |
517
59b32c04e105
plugin text commands: added /help command
Goffi <goffi@goffi.org>
parents:
515
diff
changeset
|
53 #FIXME: doc strings for commands have to be translatable |
59b32c04e105
plugin text commands: added /help command
Goffi <goffi@goffi.org>
parents:
515
diff
changeset
|
54 # plugins need a dynamic translation system (translation |
59b32c04e105
plugin text commands: added /help command
Goffi <goffi@goffi.org>
parents:
515
diff
changeset
|
55 # should be downloadable independently) |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
56 |
1002
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
57 HELP_SUGGESTION = _("Type '/help' to get a list of the available commands. If you didn't want to use a command, please start your message with '//' to escape the slash.") |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
58 |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
59 def __init__(self, host): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
60 log.info(_("Text commands initialization")) |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
61 self.host = host |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
62 host.trigger.add("messageSend", self.messageSendTrigger) |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
63 self._commands = {} |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
64 self._whois = [] |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
65 self.registerTextCommands(self) |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
66 |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
67 def _parseDocString(self, cmd, cmd_name): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
68 """Parse a docstring to get text command data |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
69 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
70 @param cmd: function or method callback for the command, |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
71 its docstring will be used for self documentation in the following way: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
72 - first line is the command short documentation, shown with /help |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
73 - @command keyword can be used, see http://wiki.goffi.org/wiki/Coding_style/en for documentation |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
74 @return (dict): dictionary with parsed data where key can be: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
75 - "doc_short_help" (default: ""): the untranslated short documentation |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
76 - "type" (default "all"): the command type as specified in documentation |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
77 - "args" (default: ""): the arguments available, using syntax specified in documentation. |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
78 - "doc_arg_[name]": the doc of [name] argument |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
79 """ |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
80 data = OrderedDict([('doc_short_help', ""), |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
81 ('type', 'all'), |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
82 ('args', '')]) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
83 docstring = cmd.__doc__ |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
84 if docstring is None: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
85 log.warning(u"Not docstring found for command {}".format(cmd_name)) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
86 docstring = "" |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
87 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
88 doc_data = docstring.split("\n") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
89 data["doc_short_help"] = doc_data[0] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
90 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
91 try: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
92 cmd_indent = 0 # >0 when @command is found are we are parsing it |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
93 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
94 for line in doc_data: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
95 stripped = line.strip() |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
96 if cmd_indent and line[cmd_indent:cmd_indent+5] == " -": |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
97 colon_idx = line.find(":") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
98 if colon_idx == -1: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
99 raise InvalidCommandSyntax("No colon found in argument description") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
100 arg_name = line[cmd_indent+6:colon_idx].strip() |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
101 if not arg_name: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
102 raise InvalidCommandSyntax("No name found in argument description") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
103 arg_help = line[colon_idx+1:].strip() |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
104 data["doc_arg_{}".format(arg_name)] = arg_help |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
105 elif cmd_indent: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
106 # we are parsing command and indent level is not good, it's finished |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
107 break |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
108 elif stripped.startswith(CMD_KEY): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
109 cmd_indent = line.find(CMD_KEY) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
110 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
111 # type |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
112 colon_idx = stripped.find(":") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
113 if colon_idx == -1: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
114 raise InvalidCommandSyntax("missing colon") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
115 type_data = stripped[len(CMD_KEY):colon_idx].strip() |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
116 if len(type_data) == 0: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
117 type_data="(all)" |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
118 elif len(type_data) <= 2 or type_data[0] != '(' or type_data[-1] != ')': |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
119 raise InvalidCommandSyntax("Bad type data syntax") |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
120 type_ = type_data[1:-1] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
121 if type_ not in CMD_TYPES: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
122 raise InvalidCommandSyntax("Unknown type {}".format(type_)) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
123 data["type"] = type_ |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
124 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
125 #args |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
126 data["args"] = stripped[colon_idx+1:].strip() |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
127 except InvalidCommandSyntax as e: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
128 log.warning(u"Invalid command syntax for command {command}: {message}".format(command=cmd_name, message=e.message)) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
129 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
130 return data |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
131 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
132 |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
133 def registerTextCommands(self, instance): |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
134 """ Add a text command |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
135 |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
136 @param instance: instance of a class containing text commands |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
137 """ |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
138 for attr in dir(instance): |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
139 if attr.startswith('cmd_'): |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
140 cmd = getattr(instance, attr) |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
141 if not callable(cmd): |
1409
3265a2639182
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
1396
diff
changeset
|
142 log.warning(_(u"Skipping not callable [%s] attribute") % attr) |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
143 continue |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
144 cmd_name = attr[4:] |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
145 if not cmd_name: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
146 log.warning(_("Skipping cmd_ method")) |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
147 if cmd_name in self._commands: |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
148 suff=2 |
927
cd150dd947e3
plugin text-commands: fixed name conflicts management + plugin parrot: removed now done TODO
Goffi <goffi@goffi.org>
parents:
926
diff
changeset
|
149 while (cmd_name + str(suff)) in self._commands: |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
150 suff+=1 |
927
cd150dd947e3
plugin text-commands: fixed name conflicts management + plugin parrot: removed now done TODO
Goffi <goffi@goffi.org>
parents:
926
diff
changeset
|
151 new_name = cmd_name + str(suff) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
152 log.warning(_(u"Conflict for command [{old_name}], renaming it to [{new_name}]").format(old_name=cmd_name, new_name=new_name)) |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
153 cmd_name = new_name |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
154 self._commands[cmd_name] = cmd_data = OrderedDict({'callback':cmd}) # We use an Ordered dict to keep documenation order |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
155 cmd_data.update(self._parseDocString(cmd, cmd_name)) |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
156 log.info(_("Registered text command [%s]") % cmd_name) |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
157 |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
158 def addWhoIsCb(self, callback, priority=0): |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
159 """Add a callback which give information to the /whois command |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
160 |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
161 @param callback: a callback which will be called with the following arguments |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
162 - whois_msg: list of information strings to display, callback need to append its own strings to it |
1199 | 163 - target_jid: full jid from whom we want information |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
164 - profile: %(doc_profile)s |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
165 @param priority: priority of the information to show (the highest priority will be displayed first) |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
166 """ |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
167 self._whois.append((priority, callback)) |
928
73873e9b56f7
plugin XEP-0045: added user information to /whois text command
Goffi <goffi@goffi.org>
parents:
927
diff
changeset
|
168 self._whois.sort(key=lambda item: item[0], reverse=True) |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
169 |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
170 def messageSendTrigger(self, client, mess_data, pre_xml_treatments, post_xml_treatments): |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
171 """Install SendMessage command hook """ |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
172 pre_xml_treatments.addCallback(self._messageSendCmdHook, client) |
921 | 173 return True |
174 | |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
175 def _messageSendCmdHook(self, mess_data, client): |
921 | 176 """ Check text commands in message, and react consequently |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
177 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
178 msg starting with / are potential command. If a command is found, it is executed, else and help message is sent |
921 | 179 msg starting with // are escaped: they are sent with a single / |
180 commands can abord message sending (if they return anything evaluating to False), or continue it (if they return True), eventually after modifying the message | |
181 an "unparsed" key is added to message, containing part of the message not yet parsed | |
182 commands can be deferred or not | |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
183 @param mess_data(dict): data comming from messageSend trigger |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
184 @param profile: %(doc_profile)s |
921 | 185 """ |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
186 try: |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
187 msg = mess_data["message"][''] |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
188 msg_lang = '' |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
189 except KeyError: |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
190 try: |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
191 # we have not default message, we try to take the first found |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
192 msg_lang, msg = mess_data["message"].iteritems().next() |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
193 except StopIteration: |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
194 log.debug(u"No message found, skipping text commands") |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
195 return mess_data |
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
196 |
921 | 197 try: |
198 if msg[:2] == '//': | |
199 # we have a double '/', it's the escape sequence | |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
200 mess_data["message"][msg_lang] = msg[1:] |
921 | 201 return mess_data |
202 if msg[0] != '/': | |
203 return mess_data | |
204 except IndexError: | |
205 return mess_data | |
206 | |
207 # we have a command | |
208 d = None | |
209 command = msg[1:].partition(' ')[0].lower() | |
210 if command.isalpha(): | |
211 # looks like an actual command, we try to call the corresponding method | |
212 def retHandling(ret): | |
213 """ Handle command return value: | |
214 if ret is True, normally send message (possibly modified by command) | |
215 else, abord message sending | |
216 """ | |
217 if ret: | |
218 return mess_data | |
219 else: | |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
220 log.debug(u"text command detected ({})".format(command)) |
1052
e88bff4c8b77
core (XMPP): sendMessage refactoring:
Goffi <goffi@goffi.org>
parents:
1025
diff
changeset
|
221 raise failure.Failure(exceptions.CancelError()) |
921 | 222 |
1082
246712d2e7bc
plugin XEP-0045, text_commands: add some commands:
souliane <souliane@mailoo.org>
parents:
1052
diff
changeset
|
223 def genericErrback(failure): |
1889
be61c5c5e474
plugin text commands: fixed log in genericErrback which was raising an exception when something than StanzaError was received
Goffi <goffi@goffi.org>
parents:
1766
diff
changeset
|
224 try: |
be61c5c5e474
plugin text commands: fixed log in genericErrback which was raising an exception when something than StanzaError was received
Goffi <goffi@goffi.org>
parents:
1766
diff
changeset
|
225 msg = u"with condition {}".format(failure.value.condition) |
be61c5c5e474
plugin text commands: fixed log in genericErrback which was raising an exception when something than StanzaError was received
Goffi <goffi@goffi.org>
parents:
1766
diff
changeset
|
226 except AttributeError: |
be61c5c5e474
plugin text commands: fixed log in genericErrback which was raising an exception when something than StanzaError was received
Goffi <goffi@goffi.org>
parents:
1766
diff
changeset
|
227 msg = u"with error {}".format(failure.value) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
228 self.feedBack(client, u"Command failed {}".format(msg), mess_data) |
1082
246712d2e7bc
plugin XEP-0045, text_commands: add some commands:
souliane <souliane@mailoo.org>
parents:
1052
diff
changeset
|
229 return False |
246712d2e7bc
plugin XEP-0045, text_commands: add some commands:
souliane <souliane@mailoo.org>
parents:
1052
diff
changeset
|
230 |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
231 mess_data["unparsed"] = msg[1 + len(command):] # part not yet parsed of the message |
921 | 232 try: |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
233 cmd_data = self._commands[command] |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
234 except KeyError: |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
235 self.feedBack(client, _("Unknown command /%s. ") % command + self.HELP_SUGGESTION, mess_data) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
236 log.debug("text command help message") |
1052
e88bff4c8b77
core (XMPP): sendMessage refactoring:
Goffi <goffi@goffi.org>
parents:
1025
diff
changeset
|
237 raise failure.Failure(exceptions.CancelError()) |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
238 else: |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
239 if not self._contextValid(mess_data, cmd_data): |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
240 # The command is not launched in the right context, we throw a message with help instructions |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
241 context_txt = _("group discussions") if cmd_data["type"] == "group" else _("one to one discussions") |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
242 feedback = _("/{command} command only applies in {context}.").format(command=command, context=context_txt) |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
243 self.feedBack(client, u"{} {}".format(feedback, self.HELP_SUGGESTION), mess_data) |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
244 log.debug("text command invalid message") |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
245 raise failure.Failure(exceptions.CancelError()) |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
246 else: |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
247 d = defer.maybeDeferred(cmd_data["callback"], client, mess_data) |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
248 d.addErrback(genericErrback) |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
249 d.addCallback(retHandling) |
921 | 250 |
1002
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
251 return d or mess_data # if a command is detected, we should have a deferred, else we send the message normally |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
252 |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
253 def _contextValid(self, mess_data, cmd_data): |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
254 """Tell if a command can be used in the given context |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
255 |
1955
633b5c21aefd
backend, frontend: messages refactoring (huge commit, not finished):
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
256 @param mess_data(dict): message data as given in messageSend trigger |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
257 @param cmd_data(dict): command data as returned by self._parseDocString |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
258 @return (bool): True if command can be used in this context |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
259 """ |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
260 if ((cmd_data['type'] == "group" and mess_data["type"] != "groupchat") or |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
261 (cmd_data['type'] == 'one2one' and mess_data["type"] == "groupchat")): |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
262 return False |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
263 return True |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
264 |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
265 def getRoomJID(self, arg, service_jid): |
508
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
266 """Return a room jid with a shortcut |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
267 |
508
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
268 @param arg: argument: can be a full room jid (e.g.: sat@chat.jabberfr.org) |
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
269 or a shortcut (e.g.: sat or sat@ for sat on current service) |
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
270 @param service_jid: jid of the current service (e.g.: chat.jabberfr.org) |
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
271 """ |
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
272 nb_arobas = arg.count('@') |
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
273 if nb_arobas == 1: |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
274 if arg[-1] != '@': |
508
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
275 return jid.JID(arg) |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
276 return jid.JID(arg + service_jid) |
508
7c6609dddb2c
plugin text commands: /leave management:
Goffi <goffi@goffi.org>
parents:
506
diff
changeset
|
277 return jid.JID(u"%s@%s" % (arg, service_jid)) |
506
2e43c74815ad
plugin text commands: Text commands is a new plugin that bring IRC-like commands
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
278 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
279 def feedBack(self, client, message, mess_data, info_type=FEEDBACK_INFO_TYPE): |
523
24c0d51449e7
plugin text commands: added _feedback method to send an answer to user
Goffi <goffi@goffi.org>
parents:
519
diff
changeset
|
280 """Give a message back to the user""" |
24c0d51449e7
plugin text commands: added _feedback method to send an answer to user
Goffi <goffi@goffi.org>
parents:
519
diff
changeset
|
281 if mess_data["type"] == 'groupchat': |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
282 to_ = mess_data["to"].userhostJID() |
523
24c0d51449e7
plugin text commands: added _feedback method to send an answer to user
Goffi <goffi@goffi.org>
parents:
519
diff
changeset
|
283 else: |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
284 to_ = client.jid |
523
24c0d51449e7
plugin text commands: added _feedback method to send an answer to user
Goffi <goffi@goffi.org>
parents:
519
diff
changeset
|
285 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
286 # we need to invert send message back, so sender need to original destinee |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
287 mess_data["from"] = mess_data["to"] |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
288 mess_data["to"] = to_ |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
289 mess_data["type"] = C.MESS_TYPE_INFO |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
290 mess_data["message"] = {'': message} |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
291 mess_data["extra"]["info_type"] = info_type |
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
292 self.host.messageSendToBridge(mess_data, client) |
523
24c0d51449e7
plugin text commands: added _feedback method to send an answer to user
Goffi <goffi@goffi.org>
parents:
519
diff
changeset
|
293 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
294 def cmd_whois(self, client, mess_data): |
1372
85caf0a3abb3
plugin text commands: minor docstrings improvments
Goffi <goffi@goffi.org>
parents:
1371
diff
changeset
|
295 """show informations on entity |
85caf0a3abb3
plugin text commands: minor docstrings improvments
Goffi <goffi@goffi.org>
parents:
1371
diff
changeset
|
296 |
85caf0a3abb3
plugin text commands: minor docstrings improvments
Goffi <goffi@goffi.org>
parents:
1371
diff
changeset
|
297 @command: [JID|ROOM_NICK] |
85caf0a3abb3
plugin text commands: minor docstrings improvments
Goffi <goffi@goffi.org>
parents:
1371
diff
changeset
|
298 - JID: entity to request |
85caf0a3abb3
plugin text commands: minor docstrings improvments
Goffi <goffi@goffi.org>
parents:
1371
diff
changeset
|
299 - ROOM_NICK: nick of the room to request |
85caf0a3abb3
plugin text commands: minor docstrings improvments
Goffi <goffi@goffi.org>
parents:
1371
diff
changeset
|
300 """ |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
301 log.debug("Catched whois command") |
698
d731ae066158
core: sendMessage's options parameter has been renamed to extra to be consistent with newMessage
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
302 |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
303 entity = mess_data["unparsed"].strip() |
698
d731ae066158
core: sendMessage's options parameter has been renamed to extra to be consistent with newMessage
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
304 |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
305 if mess_data['type'] == "groupchat": |
928
73873e9b56f7
plugin XEP-0045: added user information to /whois text command
Goffi <goffi@goffi.org>
parents:
927
diff
changeset
|
306 room = mess_data["to"].userhostJID() |
73873e9b56f7
plugin XEP-0045: added user information to /whois text command
Goffi <goffi@goffi.org>
parents:
927
diff
changeset
|
307 try: |
1970
200cd707a46d
plugin XEP-0045, quick_frontend + primitivus (chat): cleaning of XEP-0045 (first pass):
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
308 if self.host.plugins["XEP-0045"].isNickInRoom(client, room, entity): |
928
73873e9b56f7
plugin XEP-0045: added user information to /whois text command
Goffi <goffi@goffi.org>
parents:
927
diff
changeset
|
309 entity = u"%s/%s" % (room, entity) |
73873e9b56f7
plugin XEP-0045: added user information to /whois text command
Goffi <goffi@goffi.org>
parents:
927
diff
changeset
|
310 except KeyError: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
929
diff
changeset
|
311 log.warning("plugin XEP-0045 is not present") |
698
d731ae066158
core: sendMessage's options parameter has been renamed to extra to be consistent with newMessage
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
312 |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
313 if not entity: |
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
314 target_jid = mess_data["to"] |
698
d731ae066158
core: sendMessage's options parameter has been renamed to extra to be consistent with newMessage
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
315 else: |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
316 try: |
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
317 target_jid = jid.JID(entity) |
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
318 if not target_jid.user or not target_jid.host: |
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
319 raise jid.InvalidFormat |
1742
244a605623d6
complete the Exception's list when catching JID error:
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
320 except (RuntimeError, jid.InvalidFormat, AttributeError): |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
321 self.feedBack(client, _("Invalid jid, can't whois"), mess_data) |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
322 return False |
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
323 |
921 | 324 if not target_jid.resource: |
1970
200cd707a46d
plugin XEP-0045, quick_frontend + primitivus (chat): cleaning of XEP-0045 (first pass):
Goffi <goffi@goffi.org>
parents:
1963
diff
changeset
|
325 target_jid.resource = self.host.memory.getMainResource(client, target_jid) |
921 | 326 |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
327 whois_msg = [_(u"whois for %(jid)s") % {'jid': target_jid}] |
698
d731ae066158
core: sendMessage's options parameter has been renamed to extra to be consistent with newMessage
Goffi <goffi@goffi.org>
parents:
697
diff
changeset
|
328 |
926
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
329 d = defer.succeed(None) |
d609581bf74a
plugin text commands: refactoring, text now only contain main commands, and other plugin can add commands themselve:
Goffi <goffi@goffi.org>
parents:
922
diff
changeset
|
330 for ignore, callback in self._whois: |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
331 d.addCallback(lambda ignore: callback(client, whois_msg, mess_data, target_jid)) |
921 | 332 |
333 def feedBack(ignore): | |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
334 self.feedBack(client, u"\n".join(whois_msg), mess_data) |
921 | 335 return False |
336 | |
337 d.addCallback(feedBack) | |
338 return d | |
600
c5451501465b
plugin text commands: basic /whois command (just show jid so far)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
339 |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
340 def _getArgsHelp(self, cmd_data): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
341 """Return help string for args of cmd_name, according to docstring data |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
342 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
343 @param cmd_data: command data |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
344 @return (list[unicode]): help strings |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
345 """ |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
346 strings = [] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
347 for doc_name, doc_help in cmd_data.iteritems(): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
348 if doc_name.startswith("doc_arg_"): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
349 arg_name = doc_name[8:] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
350 strings.append(u"- {name}: {doc_help}".format(name=arg_name, doc_help=_(doc_help))) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
351 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
352 return strings |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
353 |
2055
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
354 def cmd_me(self, client, mess_data): |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
355 """display a message at third person |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
356 |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
357 @command (all): message |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
358 - message: message to show at third person |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
359 e.g.: "/me clenches his fist" will give "[YOUR_NICK] clenches his fist" |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
360 """ |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
361 # We just ignore the command as the match is done on receiption by clients |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
362 return True |
ed33cd382bf9
plugin XEP-0245: removed plugin XEP-0245:
Goffi <goffi@goffi.org>
parents:
1970
diff
changeset
|
363 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
364 def cmd_help(self, client, mess_data): |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
365 """show help on available commands |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
366 |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
367 @command: [cmd_name] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
368 - cmd_name: name of the command for detailed help |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
369 """ |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
370 cmd_name = mess_data["unparsed"].strip() |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
371 if cmd_name and cmd_name[0] == "/": |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
372 cmd_name = cmd_name[1:] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
373 if cmd_name and cmd_name not in self._commands: |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
374 self.feedBack(client, _(u"Invalid command name [{}]\n".format(cmd_name)), mess_data) |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
375 cmd_name = "" |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
376 if not cmd_name: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
377 # we show the global help |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
378 longuest = max([len(command) for command in self._commands]) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
379 help_cmds = [] |
517
59b32c04e105
plugin text commands: added /help command
Goffi <goffi@goffi.org>
parents:
515
diff
changeset
|
380 |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
381 for command in sorted(self._commands): |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
382 cmd_data = self._commands[command] |
1370
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
383 if not self._contextValid(mess_data, cmd_data): |
53c7678c27a6
plugin text commands: added _contextValid method:
Goffi <goffi@goffi.org>
parents:
1369
diff
changeset
|
384 continue |
1369
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
385 spaces = (longuest - len(command)) * ' ' |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
386 help_cmds.append(" /{command}: {spaces} {short_help}".format( |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
387 command=command, |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
388 spaces=spaces, |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
389 short_help=cmd_data["doc_short_help"] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
390 )) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
391 |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
392 help_mess = _(u"Text commands available:\n%s") % (u'\n'.join(help_cmds), ) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
393 else: |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
394 # we show detailled help for a command |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
395 cmd_data = self._commands[cmd_name] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
396 syntax = cmd_data["args"] |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
397 help_mess = _(u"/{name}: {short_help}\n{syntax}{args_help}").format( |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
398 name=cmd_name, |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
399 short_help=cmd_data['doc_short_help'], |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
400 syntax=_(" "*4+"syntax: {}\n").format(syntax) if syntax else "", |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
401 args_help=u'\n'.join([u" "*8+"{}".format(line) for line in self._getArgsHelp(cmd_data)])) |
dd1a148bd3d8
plugin text commands: docstring parsing for commands, and better /help command:
Goffi <goffi@goffi.org>
parents:
1290
diff
changeset
|
402 |
1963
a2bc5089c2eb
backend, frontends: message refactoring (huge commit):
Goffi <goffi@goffi.org>
parents:
1955
diff
changeset
|
403 self.feedBack(client, help_mess, mess_data) |