errbot 6.1.9__tar.gz → 6.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {errbot-6.1.9 → errbot-6.2.0}/CHANGES-4x.rst +1 -1
- {errbot-6.1.9 → errbot-6.2.0}/CHANGES-5x.rst +2 -2
- {errbot-6.1.9 → errbot-6.2.0}/CHANGES-pre-v4.rst +7 -7
- {errbot-6.1.9 → errbot-6.2.0}/CHANGES.rst +50 -1
- {errbot-6.1.9/errbot.egg-info → errbot-6.2.0}/PKG-INFO +85 -17
- {errbot-6.1.9 → errbot-6.2.0}/README.rst +7 -8
- {errbot-6.1.9 → errbot-6.2.0}/errbot/__init__.py +0 -3
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backend_plugin_manager.py +3 -2
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/base.py +7 -6
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/irc.py +1 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/telegram_messenger.py +1 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/test.py +8 -6
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/text.py +0 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/xmpp.py +2 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/bootstrap.py +21 -16
- {errbot-6.1.9 → errbot-6.2.0}/errbot/botplugin.py +1 -3
- {errbot-6.1.9 → errbot-6.2.0}/errbot/cli.py +8 -4
- {errbot-6.1.9 → errbot-6.2.0}/errbot/config-template.py +5 -4
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/chatRoom.py +0 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/cnf_filter.py +1 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/flows.py +2 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/help.py +5 -5
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/plugins.py +1 -2
- errbot-6.2.0/errbot/core_plugins/templates/webserver.md +5 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/textcmds.py +0 -2
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/utils.py +0 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/vcheck.py +1 -4
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/webserver.py +7 -8
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/wsview.py +0 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/flow.py +3 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/plugin_manager.py +4 -4
- {errbot-6.1.9 → errbot-6.2.0}/errbot/repo_manager.py +3 -1
- {errbot-6.1.9 → errbot-6.2.0}/errbot/streaming.py +2 -2
- {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/initdir/config.py.tmpl +1 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/utils.py +9 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/version.py +1 -1
- {errbot-6.1.9 → errbot-6.2.0/errbot.egg-info}/PKG-INFO +85 -17
- {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/SOURCES.txt +2 -4
- errbot-6.2.0/errbot.egg-info/requires.txt +36 -0
- {errbot-6.1.9 → errbot-6.2.0}/setup.cfg +1 -6
- {errbot-6.1.9 → errbot-6.2.0}/setup.py +26 -24
- errbot-6.1.9/errbot/backends/slack.plug +0 -6
- errbot-6.1.9/errbot/backends/slack.py +0 -1410
- errbot-6.1.9/errbot/backends/slack_rtm.plug +0 -6
- errbot-6.1.9/errbot/backends/slack_rtm.py +0 -1361
- errbot-6.1.9/errbot.egg-info/requires.txt +0 -33
- {errbot-6.1.9 → errbot-6.2.0}/COPYING +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/MANIFEST.in +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/__init__.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/images/errbot-bg.svg +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/images/errbot.svg +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/images/prompt.svg +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/irc.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/null.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/null.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/styles/style-demo.css +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/styles/style.css +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/telegram_messenger.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/test.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/text.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/xmpp.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/__init__.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/acls.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/acls.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/backup.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/backup.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/chatRoom.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/cnf_filter.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/flows.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/health.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/health.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/help.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/plugins.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/about.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/plugin_info.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/repos.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/repos2.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status_gc.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status_load.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status_plugins.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/webstatus.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/test.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/textcmds.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/utils.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/vcheck.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/webserver.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/logs.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/plugin_info.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/plugin_wizard.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/rendering/__init__.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/rendering/ansiext.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/rendering/xhtmlim.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/__init__.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/base.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/memory.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/memory.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/shelf.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/shelf.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/card.md +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/initdir/example.plug +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/initdir/example.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/new_plugin.py.tmpl +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot/templating.py +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/dependency_links.txt +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/entry_points.txt +0 -0
- {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/top_level.txt +0 -0
|
@@ -71,7 +71,7 @@ features:
|
|
|
71
71
|
|
|
72
72
|
fixes:
|
|
73
73
|
|
|
74
|
-
- fixed
|
|
74
|
+
- fixed importlib/use pip as process (#835) (thx Raphael Wouters)
|
|
75
75
|
- if pip is not found, don’t crash errbot
|
|
76
76
|
- build_identifier to send message to IRC channels (thx mr Shu)
|
|
77
77
|
|
|
@@ -19,7 +19,7 @@ features:
|
|
|
19
19
|
Honig)
|
|
20
20
|
- Add support for specifying a custom log formatter (Thx Oz Linden)
|
|
21
21
|
- Add Sentry transport support (thx Dylan Page)
|
|
22
|
-
- File
|
|
22
|
+
- File transfer support (send_stream_request) on the Hipchat backend
|
|
23
23
|
(thx Brad Payne)
|
|
24
24
|
- Show user where they are in a flow (thx Elijah Roberts)
|
|
25
25
|
- Help commands are sorted alphabetically (thx Fabian Chong)
|
|
@@ -35,7 +35,7 @@ fixes:
|
|
|
35
35
|
- Windows: Config directories as raw string (Thx defAnfaenger)
|
|
36
36
|
- Windows: Repo Manager first time update (Thx Jake Shadle)
|
|
37
37
|
- Slack: fix Slack identities to be hashable
|
|
38
|
-
- Hipchat: fix
|
|
38
|
+
- Hipchat: fix HipChat Server XMPP namespace (Thx Antti Palsola)
|
|
39
39
|
- Hipchat: more aggressive cashing of user list to avoid API quota
|
|
40
40
|
exceeds (thx Roman)
|
|
41
41
|
|
|
@@ -180,7 +180,7 @@ Minor improvements
|
|
|
180
180
|
~~~~~~~~~~~~~~~~~~
|
|
181
181
|
|
|
182
182
|
- hipchat endpoint can be used (#348)
|
|
183
|
-
- XMPP server parameter can be
|
|
183
|
+
- XMPP server parameter can be overridden
|
|
184
184
|
- deep internal reorganisation of the bot: the most visible change is that internal commands have been split into internal plugins.
|
|
185
185
|
- IRC backend: we have now a reconnection logic on disconnect and on kick (see ``IRC_RECONNECT_ON_DISCONNECT`` in the config file for example)
|
|
186
186
|
|
|
@@ -269,7 +269,7 @@ features:
|
|
|
269
269
|
- third party backends (they are plugins too)
|
|
270
270
|
- completely revamped backup/restore feature.
|
|
271
271
|
- hipchat endpoint can be used (#348)
|
|
272
|
-
- XMPP server parameter can be
|
|
272
|
+
- XMPP server parameter can be overridden
|
|
273
273
|
- Identifiers are now generic (not tight to XMPP anymore)
|
|
274
274
|
|
|
275
275
|
fixes:
|
|
@@ -308,7 +308,7 @@ features:
|
|
|
308
308
|
|
|
309
309
|
- New serverless tox backend (see http://tox.im for more info)
|
|
310
310
|
- New Presence callbacks with status messages etc.
|
|
311
|
-
- New file
|
|
311
|
+
- New file transfer support (upload and downloads) for selected backends
|
|
312
312
|
- New MUC management API
|
|
313
313
|
- added err-githubhook to the official repo list (thx Daniele Sluijters)
|
|
314
314
|
- added err-linksBot to the official repo list (thx Arnaud Vazard)
|
|
@@ -402,7 +402,7 @@ features:
|
|
|
402
402
|
- Added the !room create command for adhoc room creation (google talk)
|
|
403
403
|
- Added sedbot to the official repos
|
|
404
404
|
- Added support for plugin based webviews
|
|
405
|
-
- Add err-
|
|
405
|
+
- Add err-aggressive-keepalive to the official repos
|
|
406
406
|
- Allow botcmd's to yield values
|
|
407
407
|
- Allow configuration of MESSAGE_SIZE_LIMIT
|
|
408
408
|
|
|
@@ -430,7 +430,7 @@ features:
|
|
|
430
430
|
- SSL support for webhook callbacks
|
|
431
431
|
- JID unicode support
|
|
432
432
|
- Per user command history (Thanks to Leonid S. Usov https://github.com/leonid-s-usov)
|
|
433
|
-
- HIDE_RESTRICTED_COMMANDS option added to filter out the non
|
|
433
|
+
- HIDE_RESTRICTED_COMMANDS option added to filter out the non accessible commands from the help (Thanks to Leonid S. Usov https://github.com/leonid-s-usov)
|
|
434
434
|
- err-markovbot has been added to the official plugins list (Thanks to Max Wagner https://github.com/MaxWagner)
|
|
435
435
|
- the version parsing now supports beta, alpha, rc etc ... statuses
|
|
436
436
|
|
|
@@ -508,7 +508,7 @@ fixes:
|
|
|
508
508
|
|
|
509
509
|
- bot initiated messages were not correctly callbacked on jabber backend
|
|
510
510
|
- !apropos was generating an unicode error thx to https://github.com/zoni for the fix
|
|
511
|
-
- corrected a
|
|
511
|
+
- corrected a series of issues related to the sharedmiddleware on flask
|
|
512
512
|
- fixed a regression on the IRC backend thx to https://github.com/nvdk for helping on those
|
|
513
513
|
|
|
514
514
|
features:
|
|
@@ -597,7 +597,7 @@ fixes:
|
|
|
597
597
|
- corrected a threading issue that was preventing err to quit
|
|
598
598
|
- the python shebangs lines where not generic
|
|
599
599
|
- the config path is not inserted first so we don't conflict with other installs
|
|
600
|
-
- corrected a corruption of the configs on some
|
|
600
|
+
- corrected a corruption of the configs on some persistence stores on shutdown
|
|
601
601
|
|
|
602
602
|
features:
|
|
603
603
|
|
|
@@ -1,3 +1,52 @@
|
|
|
1
|
+
v6.2.0 (2024-01-01)
|
|
2
|
+
-------------------
|
|
3
|
+
|
|
4
|
+
breaking:
|
|
5
|
+
|
|
6
|
+
- backend/slack: remove slack and slack_rtm built-in backends (#1581)
|
|
7
|
+
- core/logging: deprecate SENTRY_TRANSPORT config (#1604)
|
|
8
|
+
- core: removing py37 support (#1652)
|
|
9
|
+
|
|
10
|
+
features:
|
|
11
|
+
|
|
12
|
+
- core/plugins: detect plugins using entrypoints (#1590)
|
|
13
|
+
- core/logging: add new SENTRY_OPTIONS config (#1597)
|
|
14
|
+
- core/plugins: make slack, mattermost and discord backends available as install requirements (#1611)
|
|
15
|
+
|
|
16
|
+
fixes:
|
|
17
|
+
|
|
18
|
+
- docs: add unreleased section (#1576)
|
|
19
|
+
- docs: update broken URL for Markdown Extra (#1572)
|
|
20
|
+
- chore: bump actions/setup-python version (#1575, #1593, #1609, #1626, #1642, #1650, #1659, #1674)
|
|
21
|
+
- backend/telegram: fix missing imports (#1574)
|
|
22
|
+
- chore: ci improvements (#1577, #1583)
|
|
23
|
+
- chore: add docs build to ci (#1582)
|
|
24
|
+
- backend/xmpp: fix forward type references (#1578)
|
|
25
|
+
- chore: remove campfire references (#1584)
|
|
26
|
+
- chore/setup: fix exception when installing on python <3.7 (#1585)
|
|
27
|
+
- docs: typos (#1589, #1594)
|
|
28
|
+
- chore: simplify isort config using black (#1595)
|
|
29
|
+
- fix: detecting entrypoint module paths (#1603)
|
|
30
|
+
- chore: fix Docker build to use local tree (#1608)
|
|
31
|
+
- chore: bump actions/checkout version (#1610, #1625, #1637, #1644, #1653, #1656, #1658, #1663)
|
|
32
|
+
- docs: link to external Discord plugin documentation (#1615)
|
|
33
|
+
- chore: add ARG to Dockerfile and add proper stop signal (#1613)
|
|
34
|
+
- fix: update module versions and build (#1627)
|
|
35
|
+
- chore: update setuptools version (#1628)
|
|
36
|
+
- refactor: detecting entry point plugins (#1630)
|
|
37
|
+
- chore: bump mr-smithers-excellent/docker-build-push version (#1633)
|
|
38
|
+
- docs: fix example code in the testing section (#1643)
|
|
39
|
+
- chore: update all core dependencies (#1651)
|
|
40
|
+
- fix: use template file for webserver plugin echo output (#1654)
|
|
41
|
+
- chore: update repos.json (#1660)
|
|
42
|
+
- docs: add readthedocs yaml config (#1661)
|
|
43
|
+
- fix: broken integration tests (#1668)
|
|
44
|
+
- style: replace format() with f-strings (#1667)
|
|
45
|
+
- migrate from external mock package to stdlib unittest.mock (#1673)
|
|
46
|
+
- fix: import of Mapping from collections.abc (#1675)
|
|
47
|
+
- backend: update irc, telegram and xmpp dependencies (#1655)
|
|
48
|
+
|
|
49
|
+
|
|
1
50
|
v6.1.9 (2022-06-11)
|
|
2
51
|
-------------------
|
|
3
52
|
|
|
@@ -52,7 +101,7 @@ features:
|
|
|
52
101
|
fixes:
|
|
53
102
|
|
|
54
103
|
- core/cli: failure when passing relative directory during --init (#1511)
|
|
55
|
-
- backend/xmpp: include message delayed for send/
|
|
104
|
+
- backend/xmpp: include message delayed for send/received messages (#1270)
|
|
56
105
|
- backend/xmpp: "unexpected keyword argument 'wait'" when connecting (#1507)
|
|
57
106
|
- docs: update broken readme link to plugin development docs (#1504)
|
|
58
107
|
- close threadpool on exit (#1486)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: errbot
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.2.0
|
|
4
4
|
Summary: Errbot is a chatbot designed to be simple to extend with plugins written in Python.
|
|
5
5
|
Home-page: http://errbot.io/
|
|
6
6
|
Author: errbot.io
|
|
@@ -14,17 +14,39 @@ Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
|
|
|
14
14
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.8
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
20
|
Description-Content-Type: text/x-rst
|
|
22
|
-
|
|
21
|
+
License-File: COPYING
|
|
22
|
+
Requires-Dist: webtest==3.0.0
|
|
23
|
+
Requires-Dist: setuptools==68.1.2
|
|
24
|
+
Requires-Dist: flask==2.3.3
|
|
25
|
+
Requires-Dist: requests==2.31.0
|
|
26
|
+
Requires-Dist: jinja2==3.1.2
|
|
27
|
+
Requires-Dist: pyOpenSSL==23.2.0
|
|
28
|
+
Requires-Dist: colorlog==6.7.0
|
|
29
|
+
Requires-Dist: markdown==3.4.4
|
|
30
|
+
Requires-Dist: ansi==0.3.6
|
|
31
|
+
Requires-Dist: Pygments==2.16.1
|
|
32
|
+
Requires-Dist: pygments-markdown-lexer==0.1.0.dev39
|
|
33
|
+
Requires-Dist: dulwich==0.21.5
|
|
34
|
+
Requires-Dist: deepmerge==1.1.0
|
|
23
35
|
Provides-Extra: slack
|
|
24
|
-
|
|
36
|
+
Requires-Dist: errbot-backend-slackv3==0.2.1; extra == "slack"
|
|
37
|
+
Provides-Extra: discord
|
|
38
|
+
Requires-Dist: err-backend-discord==3.0.1; extra == "discord"
|
|
39
|
+
Provides-Extra: mattermost
|
|
40
|
+
Requires-Dist: err-backend-mattermost==3.0.0; extra == "mattermost"
|
|
41
|
+
Provides-Extra: irc
|
|
42
|
+
Requires-Dist: irc==20.3.0; extra == "irc"
|
|
25
43
|
Provides-Extra: telegram
|
|
26
|
-
|
|
27
|
-
|
|
44
|
+
Requires-Dist: python-telegram-bot==13.15; extra == "telegram"
|
|
45
|
+
Provides-Extra: xmpp
|
|
46
|
+
Requires-Dist: slixmpp==1.8.4; extra == "xmpp"
|
|
47
|
+
Requires-Dist: pyasn1==0.5.0; extra == "xmpp"
|
|
48
|
+
Requires-Dist: pyasn1-modules==0.3.0; extra == "xmpp"
|
|
49
|
+
Requires-Dist: daemonize==2.5.0; sys_platform != "win32"
|
|
28
50
|
|
|
29
51
|
.. image:: https://errbot.readthedocs.org/en/latest/_static/errbot.png
|
|
30
52
|
:target: http://errbot.io
|
|
@@ -71,16 +93,15 @@ Chat servers support
|
|
|
71
93
|
**Built-in**
|
|
72
94
|
|
|
73
95
|
- IRC support
|
|
74
|
-
- `Slack support <https://slack.com/>`_
|
|
75
96
|
- `Telegram support <https://www.telegram.org/>`_
|
|
76
97
|
- `XMPP support <http://xmpp.org>`_
|
|
77
98
|
|
|
78
99
|
**With add-ons**
|
|
79
100
|
|
|
80
|
-
- `
|
|
81
|
-
- `
|
|
82
|
-
- `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/gbin/err-backend-discord>`__)
|
|
101
|
+
- `Slack support <https://slack.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-slackv3>`__)
|
|
102
|
+
- `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-discord>`__)
|
|
83
103
|
- `Gitter support <https://gitter.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-gitter>`__)
|
|
104
|
+
- `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
|
|
84
105
|
- `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
|
|
85
106
|
- `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
|
|
86
107
|
- `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
|
|
@@ -108,7 +129,7 @@ Developer features
|
|
|
108
129
|
- Presetup storage for every plugin i.e. ``self['foo'] = 'bar'`` persists the value.
|
|
109
130
|
- Conversation flows to track conversation states from users.
|
|
110
131
|
- Webhook callbacks support
|
|
111
|
-
- supports `markdown extras <https://
|
|
132
|
+
- supports `markdown extras <https://markdown-extra.readthedocs.io/>`_ formatting with tables, embedded images, links etc.
|
|
112
133
|
- configuration helper to allow your plugin to be configured by chat
|
|
113
134
|
- Text development/debug consoles
|
|
114
135
|
- Self-documenting: your docstrings become help automatically
|
|
@@ -159,12 +180,12 @@ It will show you a prompt `>>>` so you can talk to your bot directly! Try `!help
|
|
|
159
180
|
Adding support for a chat system
|
|
160
181
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
161
182
|
|
|
162
|
-
For the built-ins, just use one of those options `
|
|
183
|
+
For the built-ins, just use one of those options `telegram, IRC, XMPP` with pip, you can still do it
|
|
163
184
|
after the initial installation to add the missing support for example ::
|
|
164
185
|
|
|
165
|
-
$ pip install "errbot[
|
|
186
|
+
$ pip install "errbot[irc]"
|
|
166
187
|
|
|
167
|
-
For the external ones (
|
|
188
|
+
For the external ones (Slack, Discord, Gitter, Skype, etc ...), please follow their respective github pages for instructions.
|
|
168
189
|
|
|
169
190
|
Configuration
|
|
170
191
|
~~~~~~~~~~~~~
|
|
@@ -256,6 +277,55 @@ Contribution to Errbot itself
|
|
|
256
277
|
Feel free to fork and propose changes on `github <https://www.github.com/errbotio/errbot>`_
|
|
257
278
|
|
|
258
279
|
|
|
280
|
+
v6.2.0 (2024-01-01)
|
|
281
|
+
-------------------
|
|
282
|
+
|
|
283
|
+
breaking:
|
|
284
|
+
|
|
285
|
+
- backend/slack: remove slack and slack_rtm built-in backends (#1581)
|
|
286
|
+
- core/logging: deprecate SENTRY_TRANSPORT config (#1604)
|
|
287
|
+
- core: removing py37 support (#1652)
|
|
288
|
+
|
|
289
|
+
features:
|
|
290
|
+
|
|
291
|
+
- core/plugins: detect plugins using entrypoints (#1590)
|
|
292
|
+
- core/logging: add new SENTRY_OPTIONS config (#1597)
|
|
293
|
+
- core/plugins: make slack, mattermost and discord backends available as install requirements (#1611)
|
|
294
|
+
|
|
295
|
+
fixes:
|
|
296
|
+
|
|
297
|
+
- docs: add unreleased section (#1576)
|
|
298
|
+
- docs: update broken URL for Markdown Extra (#1572)
|
|
299
|
+
- chore: bump actions/setup-python version (#1575, #1593, #1609, #1626, #1642, #1650, #1659, #1674)
|
|
300
|
+
- backend/telegram: fix missing imports (#1574)
|
|
301
|
+
- chore: ci improvements (#1577, #1583)
|
|
302
|
+
- chore: add docs build to ci (#1582)
|
|
303
|
+
- backend/xmpp: fix forward type references (#1578)
|
|
304
|
+
- chore: remove campfire references (#1584)
|
|
305
|
+
- chore/setup: fix exception when installing on python <3.7 (#1585)
|
|
306
|
+
- docs: typos (#1589, #1594)
|
|
307
|
+
- chore: simplify isort config using black (#1595)
|
|
308
|
+
- fix: detecting entrypoint module paths (#1603)
|
|
309
|
+
- chore: fix Docker build to use local tree (#1608)
|
|
310
|
+
- chore: bump actions/checkout version (#1610, #1625, #1637, #1644, #1653, #1656, #1658, #1663)
|
|
311
|
+
- docs: link to external Discord plugin documentation (#1615)
|
|
312
|
+
- chore: add ARG to Dockerfile and add proper stop signal (#1613)
|
|
313
|
+
- fix: update module versions and build (#1627)
|
|
314
|
+
- chore: update setuptools version (#1628)
|
|
315
|
+
- refactor: detecting entry point plugins (#1630)
|
|
316
|
+
- chore: bump mr-smithers-excellent/docker-build-push version (#1633)
|
|
317
|
+
- docs: fix example code in the testing section (#1643)
|
|
318
|
+
- chore: update all core dependencies (#1651)
|
|
319
|
+
- fix: use template file for webserver plugin echo output (#1654)
|
|
320
|
+
- chore: update repos.json (#1660)
|
|
321
|
+
- docs: add readthedocs yaml config (#1661)
|
|
322
|
+
- fix: broken integration tests (#1668)
|
|
323
|
+
- style: replace format() with f-strings (#1667)
|
|
324
|
+
- migrate from external mock package to stdlib unittest.mock (#1673)
|
|
325
|
+
- fix: import of Mapping from collections.abc (#1675)
|
|
326
|
+
- backend: update irc, telegram and xmpp dependencies (#1655)
|
|
327
|
+
|
|
328
|
+
|
|
259
329
|
v6.1.9 (2022-06-11)
|
|
260
330
|
-------------------
|
|
261
331
|
|
|
@@ -310,7 +380,7 @@ features:
|
|
|
310
380
|
fixes:
|
|
311
381
|
|
|
312
382
|
- core/cli: failure when passing relative directory during --init (#1511)
|
|
313
|
-
- backend/xmpp: include message delayed for send/
|
|
383
|
+
- backend/xmpp: include message delayed for send/received messages (#1270)
|
|
314
384
|
- backend/xmpp: "unexpected keyword argument 'wait'" when connecting (#1507)
|
|
315
385
|
- docs: update broken readme link to plugin development docs (#1504)
|
|
316
386
|
- close threadpool on exit (#1486)
|
|
@@ -518,5 +588,3 @@ features:
|
|
|
518
588
|
- Added a default parameter to the storage context manager
|
|
519
589
|
|
|
520
590
|
.. v9.9.9 (leave that there so master doesn't complain)
|
|
521
|
-
|
|
522
|
-
|
|
@@ -43,16 +43,15 @@ Chat servers support
|
|
|
43
43
|
**Built-in**
|
|
44
44
|
|
|
45
45
|
- IRC support
|
|
46
|
-
- `Slack support <https://slack.com/>`_
|
|
47
46
|
- `Telegram support <https://www.telegram.org/>`_
|
|
48
47
|
- `XMPP support <http://xmpp.org>`_
|
|
49
48
|
|
|
50
49
|
**With add-ons**
|
|
51
50
|
|
|
52
|
-
- `
|
|
53
|
-
- `
|
|
54
|
-
- `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/gbin/err-backend-discord>`__)
|
|
51
|
+
- `Slack support <https://slack.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-slackv3>`__)
|
|
52
|
+
- `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-discord>`__)
|
|
55
53
|
- `Gitter support <https://gitter.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-gitter>`__)
|
|
54
|
+
- `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
|
|
56
55
|
- `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
|
|
57
56
|
- `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
|
|
58
57
|
- `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
|
|
@@ -80,7 +79,7 @@ Developer features
|
|
|
80
79
|
- Presetup storage for every plugin i.e. ``self['foo'] = 'bar'`` persists the value.
|
|
81
80
|
- Conversation flows to track conversation states from users.
|
|
82
81
|
- Webhook callbacks support
|
|
83
|
-
- supports `markdown extras <https://
|
|
82
|
+
- supports `markdown extras <https://markdown-extra.readthedocs.io/>`_ formatting with tables, embedded images, links etc.
|
|
84
83
|
- configuration helper to allow your plugin to be configured by chat
|
|
85
84
|
- Text development/debug consoles
|
|
86
85
|
- Self-documenting: your docstrings become help automatically
|
|
@@ -131,12 +130,12 @@ It will show you a prompt `>>>` so you can talk to your bot directly! Try `!help
|
|
|
131
130
|
Adding support for a chat system
|
|
132
131
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
133
132
|
|
|
134
|
-
For the built-ins, just use one of those options `
|
|
133
|
+
For the built-ins, just use one of those options `telegram, IRC, XMPP` with pip, you can still do it
|
|
135
134
|
after the initial installation to add the missing support for example ::
|
|
136
135
|
|
|
137
|
-
$ pip install "errbot[
|
|
136
|
+
$ pip install "errbot[irc]"
|
|
138
137
|
|
|
139
|
-
For the external ones (
|
|
138
|
+
For the external ones (Slack, Discord, Gitter, Skype, etc ...), please follow their respective github pages for instructions.
|
|
140
139
|
|
|
141
140
|
Configuration
|
|
142
141
|
~~~~~~~~~~~~~
|
|
@@ -377,9 +377,7 @@ def arg_botcmd(
|
|
|
377
377
|
argparse_args = args[1:]
|
|
378
378
|
|
|
379
379
|
def decorator(func):
|
|
380
|
-
|
|
381
380
|
if not hasattr(func, "_err_command"):
|
|
382
|
-
|
|
383
381
|
err_command_parser = ArgumentParser(
|
|
384
382
|
prog=name or func.__name__,
|
|
385
383
|
description=func.__doc__,
|
|
@@ -387,7 +385,6 @@ def arg_botcmd(
|
|
|
387
385
|
|
|
388
386
|
@wraps(func)
|
|
389
387
|
def wrapper(self, msg, args):
|
|
390
|
-
|
|
391
388
|
# Attempt to sanitize arguments of bad characters
|
|
392
389
|
try:
|
|
393
390
|
sanitizer_re = re.compile(
|
|
@@ -5,7 +5,7 @@ from typing import Any, Iterator, List, Type, Union
|
|
|
5
5
|
|
|
6
6
|
from errbot.plugin_info import PluginInfo
|
|
7
7
|
|
|
8
|
-
from .utils import collect_roots
|
|
8
|
+
from .utils import collect_roots, entry_point_plugins
|
|
9
9
|
|
|
10
10
|
log = logging.getLogger(__name__)
|
|
11
11
|
|
|
@@ -44,7 +44,8 @@ class BackendPluginManager:
|
|
|
44
44
|
self._base_class = base_class
|
|
45
45
|
|
|
46
46
|
self.plugin_info = None
|
|
47
|
-
|
|
47
|
+
ep = entry_point_plugins(group="errbot.backend_plugins")
|
|
48
|
+
all_plugins_paths = collect_roots((base_search_dir, extra_search_dirs, ep))
|
|
48
49
|
|
|
49
50
|
for potential_plugin in enumerate_backend_plugins(all_plugins_paths):
|
|
50
51
|
if potential_plugin.name == plugin_name:
|
|
@@ -11,11 +11,12 @@ log = logging.getLogger(__name__)
|
|
|
11
11
|
|
|
12
12
|
class Identifier(ABC):
|
|
13
13
|
"""This is just use for type hinting representing the Identifier contract,
|
|
14
|
+
|
|
14
15
|
NEVER TRY TO SUBCLASS IT OUTSIDE OF A BACKEND, it is just here to show you what you can expect from an Identifier.
|
|
15
16
|
To get an instance of a real identifier, always use the properties from Message (to, from) or self.build_identifier
|
|
16
|
-
|
|
17
|
+
to make an identifier from a String.
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
The semantics is anything you can talk to: Person, Room, RoomOccupant etc.
|
|
19
20
|
"""
|
|
20
21
|
|
|
21
22
|
pass
|
|
@@ -23,9 +24,10 @@ class Identifier(ABC):
|
|
|
23
24
|
|
|
24
25
|
class Person(Identifier):
|
|
25
26
|
"""This is just use for type hinting representing the Identifier contract,
|
|
27
|
+
|
|
26
28
|
NEVER TRY TO SUBCLASS IT OUTSIDE OF A BACKEND, it is just here to show you what you can expect from an Identifier.
|
|
27
29
|
To get an instance of a real identifier, always use the properties from Message (to, from) or self.build_identifier
|
|
28
|
-
|
|
30
|
+
to make an identifier from a String.
|
|
29
31
|
"""
|
|
30
32
|
|
|
31
33
|
@property
|
|
@@ -221,7 +223,7 @@ class Room(Identifier):
|
|
|
221
223
|
"""
|
|
222
224
|
Invite one or more people into the room.
|
|
223
225
|
|
|
224
|
-
|
|
226
|
+
:param *args:
|
|
225
227
|
One or more identifiers to invite into the room.
|
|
226
228
|
"""
|
|
227
229
|
raise NotImplementedError(
|
|
@@ -389,7 +391,7 @@ class Message:
|
|
|
389
391
|
return self._extras
|
|
390
392
|
|
|
391
393
|
@property
|
|
392
|
-
def flow(self) -> "Flow":
|
|
394
|
+
def flow(self) -> "errbot.Flow":
|
|
393
395
|
"""
|
|
394
396
|
Get the conversation flow for this message.
|
|
395
397
|
|
|
@@ -590,7 +592,6 @@ class Reaction:
|
|
|
590
592
|
reaction_name: str = None,
|
|
591
593
|
reacted_to: Mapping = None,
|
|
592
594
|
):
|
|
593
|
-
|
|
594
595
|
if reactor is None:
|
|
595
596
|
raise ValueError("Reaction: reactor is None")
|
|
596
597
|
if reaction_name is None:
|
|
@@ -565,12 +565,14 @@ class TestBot:
|
|
|
565
565
|
def inject_mocks(self, plugin_name: str, mock_dict: dict):
|
|
566
566
|
"""Inject mock objects into the plugin
|
|
567
567
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
568
|
+
Example::
|
|
569
|
+
|
|
570
|
+
mock_dict = {
|
|
571
|
+
'field_1': obj_1,
|
|
572
|
+
'field_2': obj_2,
|
|
573
|
+
}
|
|
574
|
+
testbot.inject_mocks(HelloWorld, mock_dict)
|
|
575
|
+
assert 'blah' in testbot.exec_command('!hello')
|
|
574
576
|
"""
|
|
575
577
|
plugin = self.bot.plugin_manager.get_plugin_obj_by_name(plugin_name)
|
|
576
578
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import importlib
|
|
2
2
|
import logging
|
|
3
3
|
import sys
|
|
4
|
+
import warnings
|
|
4
5
|
from os import makedirs, path
|
|
5
6
|
from typing import Callable, Optional
|
|
6
7
|
|
|
@@ -131,25 +132,29 @@ def setup_bot(
|
|
|
131
132
|
|
|
132
133
|
sentry_integrations.append(FlaskIntegration())
|
|
133
134
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
sentry_options = getattr(config, "SENTRY_OPTIONS", {})
|
|
136
|
+
if hasattr(config, "SENTRY_TRANSPORT") and isinstance(
|
|
137
|
+
config.SENTRY_TRANSPORT, tuple
|
|
138
|
+
):
|
|
139
|
+
warnings.warn(
|
|
140
|
+
"SENTRY_TRANSPORT is deprecated. Please use SENTRY_OPTIONS instead.",
|
|
141
|
+
DeprecationWarning,
|
|
142
|
+
)
|
|
143
|
+
try:
|
|
138
144
|
mod = importlib.import_module(config.SENTRY_TRANSPORT[1])
|
|
139
145
|
transport = getattr(mod, config.SENTRY_TRANSPORT[0])
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
transport=transport,
|
|
146
|
+
sentry_options["transport"] = transport
|
|
147
|
+
except ImportError:
|
|
148
|
+
log.exception(
|
|
149
|
+
f"Unable to import selected SENTRY_TRANSPORT - {config.SENTRY_TRANSPORT}"
|
|
145
150
|
)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
exit(-1)
|
|
152
|
+
# merge options dict with dedicated SENTRY_DSN setting
|
|
153
|
+
sentry_kwargs = {
|
|
154
|
+
**sentry_options,
|
|
155
|
+
**{"dsn": config.SENTRY_DSN, "integrations": sentry_integrations},
|
|
156
|
+
}
|
|
157
|
+
sentry_sdk.init(**sentry_kwargs)
|
|
153
158
|
|
|
154
159
|
logger.setLevel(config.BOT_LOG_LEVEL)
|
|
155
160
|
|
|
@@ -134,9 +134,7 @@ class Command:
|
|
|
134
134
|
update_wrapper(self.definition, args, kwargs)
|
|
135
135
|
else:
|
|
136
136
|
log.warning(
|
|
137
|
-
"Attempting to append arguments to {} isn't supported."
|
|
138
|
-
self.definition
|
|
139
|
-
)
|
|
137
|
+
f"Attempting to append arguments to {self.definition} isn't supported."
|
|
140
138
|
)
|
|
141
139
|
|
|
142
140
|
|
|
@@ -27,7 +27,7 @@ from typing import Optional, Union
|
|
|
27
27
|
from errbot.bootstrap import CORE_BACKENDS
|
|
28
28
|
from errbot.logs import root_logger
|
|
29
29
|
from errbot.plugin_wizard import new_plugin_wizard
|
|
30
|
-
from errbot.utils import collect_roots
|
|
30
|
+
from errbot.utils import collect_roots, entry_point_plugins
|
|
31
31
|
from errbot.version import VERSION
|
|
32
32
|
|
|
33
33
|
log = logging.getLogger(__name__)
|
|
@@ -83,10 +83,10 @@ def get_config(config_path: str):
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
def _read_dict() -> dict:
|
|
86
|
-
import
|
|
86
|
+
from collections.abc import Mapping
|
|
87
87
|
|
|
88
88
|
new_dict = ast.literal_eval(sys.stdin.read())
|
|
89
|
-
if not isinstance(new_dict,
|
|
89
|
+
if not isinstance(new_dict, Mapping):
|
|
90
90
|
raise ValueError(
|
|
91
91
|
f"A dictionary written in python is needed from stdin. "
|
|
92
92
|
f"Type={type(new_dict)}, Value = {repr(new_dict)}."
|
|
@@ -95,7 +95,6 @@ def _read_dict() -> dict:
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def main() -> None:
|
|
98
|
-
|
|
99
98
|
execution_dir = getcwd()
|
|
100
99
|
|
|
101
100
|
# By default insert the execution path (useful to be able to execute Errbot from
|
|
@@ -209,6 +208,7 @@ def main() -> None:
|
|
|
209
208
|
|
|
210
209
|
data_dir = base_dir / "data"
|
|
211
210
|
extra_plugin_dir = base_dir / "plugins"
|
|
211
|
+
extra_backend_plugin_dir = base_dir / "backend-plugins"
|
|
212
212
|
example_plugin_dir = extra_plugin_dir / "err-example"
|
|
213
213
|
log_path = base_dir / "errbot.log"
|
|
214
214
|
|
|
@@ -220,6 +220,7 @@ def main() -> None:
|
|
|
220
220
|
|
|
221
221
|
data_dir.mkdir(exist_ok=True)
|
|
222
222
|
extra_plugin_dir.mkdir(exist_ok=True)
|
|
223
|
+
extra_backend_plugin_dir.mkdir(exist_ok=True)
|
|
223
224
|
example_plugin_dir.mkdir(exist_ok=True)
|
|
224
225
|
|
|
225
226
|
with open(base_dir / "config.py", "w") as f:
|
|
@@ -227,6 +228,7 @@ def main() -> None:
|
|
|
227
228
|
config_template.render(
|
|
228
229
|
data_dir=str(data_dir),
|
|
229
230
|
extra_plugin_dir=str(extra_plugin_dir),
|
|
231
|
+
extra_backend_plugin_dir=str(extra_backend_plugin_dir),
|
|
230
232
|
log_path=str(log_path),
|
|
231
233
|
)
|
|
232
234
|
)
|
|
@@ -281,6 +283,8 @@ def main() -> None:
|
|
|
281
283
|
extra_backend = getattr(config, "BOT_EXTRA_BACKEND_DIR", [])
|
|
282
284
|
if isinstance(extra_backend, str):
|
|
283
285
|
extra_backend = [extra_backend]
|
|
286
|
+
ep = entry_point_plugins(group="errbot.backend_plugins")
|
|
287
|
+
extra_backend.extend(ep)
|
|
284
288
|
|
|
285
289
|
if args["list"]:
|
|
286
290
|
from errbot.backend_plugin_manager import enumerate_backend_plugins
|