--- /srv/reproducible-results/rbuild-debian/r-b-build.krcSXovW/b1/slidge_0.1.0-1_i386.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.krcSXovW/b2/slidge_0.1.0-1_i386.changes ├── Files │ @@ -1,3 +1,3 @@ │ │ - d091c300f37944c6dc38333ca0c45cb7 2106740 python optional python-slidge-doc_0.1.0-1_all.deb │ + 7faa4a697192398d52b40f6ba0b69266 2108400 python optional python-slidge-doc_0.1.0-1_all.deb │ 7eda4aa03806b6edc9aeeda7a0406c27 109436 python optional python3-slidge_0.1.0-1_all.deb ├── python-slidge-doc_0.1.0-1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2024-04-09 06:27:33.000000 debian-binary │ │ --rw-r--r-- 0 0 0 5756 2024-04-09 06:27:33.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 2100792 2024-04-09 06:27:33.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 5764 2024-04-09 06:27:33.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 2102444 2024-04-09 06:27:33.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: python-slidge-doc │ │ │ │ Source: slidge │ │ │ │ Version: 0.1.0-1 │ │ │ │ Architecture: all │ │ │ │ Maintainer: Debian XMPP Maintainers │ │ │ │ -Installed-Size: 6385 │ │ │ │ +Installed-Size: 6514 │ │ │ │ Depends: libjs-sphinxdoc (>= 7.2.2) │ │ │ │ Section: python │ │ │ │ Priority: optional │ │ │ │ Multi-Arch: foreign │ │ │ │ Homepage: https://slidge.im/ │ │ │ │ Description: XMPP puppeteer gateway library in Python (documentation) │ │ │ │ Slidge makes writing gateways to other chat networks (legacy modules) │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -29,30 +29,30 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/__main__/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1075 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/__main__/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/adhoc/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 900 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/adhoc/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 111 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 6583 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 7474 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/base/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/categories/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 126 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/categories/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/chat_command/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 132 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/chat_command/index.rst.txt │ │ │ │ -rw-r--r-- 0 root (0) root (0) 6295 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/register/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1654 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/register/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/user/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 8159 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/user/index.rst.txt │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 108 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/user/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 6247 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt │ │ │ │ --rw-r--r-- 0 root (0) root (0) 9069 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15583 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 18405 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/roster/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 3273 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/roster/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/cache/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 293 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/cache/index.rst.txt │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/config/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 105 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/core/config/index.rst.txt │ │ │ │ @@ -207,47 +207,47 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/__main__/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 19507 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/__main__/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/adhoc/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 22099 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/adhoc/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 15820 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 55124 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 67230 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/base/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/categories/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15855 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/categories/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/chat_command/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15869 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/chat_command/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 61549 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/register/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 26585 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/register/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/user/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 65296 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/user/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 15813 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/user/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 36508 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/index.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 47360 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 89249 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/contact/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 99409 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/roster/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 29300 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/contact/roster/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/cache/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 17584 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/cache/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/config/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15828 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/config/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/base/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 60006 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/base/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 60034 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/base/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/caps/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15996 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/caps/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/delivery_receipt/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16254 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/delivery_receipt/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/disco/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16003 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/disco/index.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 59859 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 59887 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/mam/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15989 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/mam/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/muc_admin/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16031 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/muc_admin/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/ping/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15996 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/ping/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/gateway/presence/ │ │ │ │ @@ -280,26 +280,26 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/presence/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16017 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/presence/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/recipient/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16024 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/mixins/recipient/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/pubsub/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15828 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/pubsub/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 81334 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 81486 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/core/session/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/archive/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18348 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/archive/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/bookmarks/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 23050 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/bookmarks/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 69337 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 23288 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/participant/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 53571 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/group/room/index.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 125146 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 125320 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/migration/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15688 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/migration/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18418 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15891 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/slixfix/link_preview/link_preview/ │ │ │ │ @@ -322,38 +322,38 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 200952 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/test/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/types/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 69813 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/types/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/util/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 48331 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/util/util/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 97435 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 97797 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/contact/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/gateway/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 76603 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/gateway/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 117286 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 117648 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/group/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18059 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/legacy_client/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15738 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/legacy_client/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 81842 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 82001 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/session/index.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/util/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15675 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/api/superduper/util/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 21932 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/contributing.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 24720 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/design.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16277 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/howto.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18679 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 32866 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/dev/tutorial.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 196114 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/genindex.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 202314 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/genindex.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20735 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/glossary.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 92078 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/index.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 10542 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/objects.inv │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 97597 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/index.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 10815 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/objects.inv │ │ │ │ -rw-r--r-- 0 root (0) root (0) 31403 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/py-modindex.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 15250 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/search.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 229389 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/searchindex.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 236128 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/searchindex.js │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20135 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/commands.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 17984 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/contacts.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20204 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 17322 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/low_profile.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16204 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/note.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20373 2024-04-09 06:27:33.000000 ./usr/share/doc/python-slidge-doc/html/user/register.html │ │ │ ├── ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/admin/index.rst.txt │ │ │ │ @@ -2,7 +2,283 @@ │ │ │ │ │ │ │ │ :py:mod:`slidge.command.admin` │ │ │ │ ============================== │ │ │ │ │ │ │ │ .. py:module:: slidge.command.admin │ │ │ │ │ │ │ │ │ │ │ │ +Module Contents │ │ │ │ +--------------- │ │ │ │ + │ │ │ │ +Classes │ │ │ │ +~~~~~~~ │ │ │ │ + │ │ │ │ +.. autoapisummary:: │ │ │ │ + │ │ │ │ + slidge.command.admin.AdminCommand │ │ │ │ + slidge.command.admin.ListUsers │ │ │ │ + slidge.command.admin.SlidgeInfo │ │ │ │ + slidge.command.admin.DeleteUser │ │ │ │ + slidge.command.admin.ChangeLoglevel │ │ │ │ + slidge.command.admin.Exec │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +.. py:class:: AdminCommand(xmpp) │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ + │ │ │ │ + .. py:attribute:: NAME │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Friendly name of the command, eg: "do something with stuff" │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: HELP │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Long description of what the command does │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: NODE │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Name of the node used for ad-hoc commands │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: CHAT_COMMAND │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Text to send to the gateway to trigger the command via a message │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: run(session, ifrom, *args) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Entry point of the command │ │ │ │ + │ │ │ │ + :param session: If triggered by a registered user, its slidge Session │ │ │ │ + :param ifrom: JID of the command-triggering entity │ │ │ │ + :param args: When triggered via chatbot type message, additional words │ │ │ │ + after the CHAT_COMMAND string was passed │ │ │ │ + │ │ │ │ + :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: raise_if_not_authorized(jid) │ │ │ │ + │ │ │ │ + Raise an appropriate error is jid is not authorized to use the command │ │ │ │ + │ │ │ │ + :param jid: jid of the entity trying to access the command │ │ │ │ + :return:session of JID if it exists │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +.. py:class:: ListUsers(xmpp) │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ + │ │ │ │ + .. py:attribute:: NODE │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Name of the node used for ad-hoc commands │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: CHAT_COMMAND │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Text to send to the gateway to trigger the command via a message │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: run(_session, _ifrom, *_) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Entry point of the command │ │ │ │ + │ │ │ │ + :param session: If triggered by a registered user, its slidge Session │ │ │ │ + :param ifrom: JID of the command-triggering entity │ │ │ │ + :param args: When triggered via chatbot type message, additional words │ │ │ │ + after the CHAT_COMMAND string was passed │ │ │ │ + │ │ │ │ + :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: raise_if_not_authorized(jid) │ │ │ │ + │ │ │ │ + Raise an appropriate error is jid is not authorized to use the command │ │ │ │ + │ │ │ │ + :param jid: jid of the entity trying to access the command │ │ │ │ + :return:session of JID if it exists │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +.. py:class:: SlidgeInfo(xmpp) │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ + │ │ │ │ + .. py:attribute:: NODE │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Name of the node used for ad-hoc commands │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: CHAT_COMMAND │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Text to send to the gateway to trigger the command via a message │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: run(_session, _ifrom, *_) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Entry point of the command │ │ │ │ + │ │ │ │ + :param session: If triggered by a registered user, its slidge Session │ │ │ │ + :param ifrom: JID of the command-triggering entity │ │ │ │ + :param args: When triggered via chatbot type message, additional words │ │ │ │ + after the CHAT_COMMAND string was passed │ │ │ │ + │ │ │ │ + :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: raise_if_not_authorized(jid) │ │ │ │ + │ │ │ │ + Raise an appropriate error is jid is not authorized to use the command │ │ │ │ + │ │ │ │ + :param jid: jid of the entity trying to access the command │ │ │ │ + :return:session of JID if it exists │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +.. py:class:: DeleteUser(xmpp) │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ + │ │ │ │ + .. py:attribute:: NODE │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Name of the node used for ad-hoc commands │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: CHAT_COMMAND │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Text to send to the gateway to trigger the command via a message │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: run(_session, _ifrom, *_) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Entry point of the command │ │ │ │ + │ │ │ │ + :param session: If triggered by a registered user, its slidge Session │ │ │ │ + :param ifrom: JID of the command-triggering entity │ │ │ │ + :param args: When triggered via chatbot type message, additional words │ │ │ │ + after the CHAT_COMMAND string was passed │ │ │ │ + │ │ │ │ + :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: raise_if_not_authorized(jid) │ │ │ │ + │ │ │ │ + Raise an appropriate error is jid is not authorized to use the command │ │ │ │ + │ │ │ │ + :param jid: jid of the entity trying to access the command │ │ │ │ + :return:session of JID if it exists │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +.. py:class:: ChangeLoglevel(xmpp) │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ + │ │ │ │ + .. py:attribute:: NODE │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Name of the node used for ad-hoc commands │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: CHAT_COMMAND │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Text to send to the gateway to trigger the command via a message │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: run(_session, _ifrom, *_) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Entry point of the command │ │ │ │ + │ │ │ │ + :param session: If triggered by a registered user, its slidge Session │ │ │ │ + :param ifrom: JID of the command-triggering entity │ │ │ │ + :param args: When triggered via chatbot type message, additional words │ │ │ │ + after the CHAT_COMMAND string was passed │ │ │ │ + │ │ │ │ + :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: raise_if_not_authorized(jid) │ │ │ │ + │ │ │ │ + Raise an appropriate error is jid is not authorized to use the command │ │ │ │ + │ │ │ │ + :param jid: jid of the entity trying to access the command │ │ │ │ + :return:session of JID if it exists │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ +.. py:class:: Exec(xmpp) │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ │ + Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ + │ │ │ │ + .. py:attribute:: NAME │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Friendly name of the command, eg: "do something with stuff" │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:attribute:: HELP │ │ │ │ + :type: str │ │ │ │ + │ │ │ │ + Long description of what the command does │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: run(session, ifrom, *args) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Entry point of the command │ │ │ │ + │ │ │ │ + :param session: If triggered by a registered user, its slidge Session │ │ │ │ + :param ifrom: JID of the command-triggering entity │ │ │ │ + :param args: When triggered via chatbot type message, additional words │ │ │ │ + after the CHAT_COMMAND string was passed │ │ │ │ + │ │ │ │ + :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: raise_if_not_authorized(jid) │ │ │ │ + │ │ │ │ + Raise an appropriate error is jid is not authorized to use the command │ │ │ │ + │ │ │ │ + :param jid: jid of the entity trying to access the command │ │ │ │ + :return:session of JID if it exists │ │ │ │ + │ │ │ │ + │ │ │ │ + │ │ │ ├── ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/command/user/index.rst.txt │ │ │ │ @@ -2,343 +2,7 @@ │ │ │ │ │ │ │ │ :py:mod:`slidge.command.user` │ │ │ │ ============================= │ │ │ │ │ │ │ │ .. py:module:: slidge.command.user │ │ │ │ │ │ │ │ │ │ │ │ -Module Contents │ │ │ │ ---------------- │ │ │ │ - │ │ │ │ -Classes │ │ │ │ -~~~~~~~ │ │ │ │ - │ │ │ │ -.. autoapisummary:: │ │ │ │ - │ │ │ │ - slidge.command.user.Search │ │ │ │ - slidge.command.user.SyncContacts │ │ │ │ - slidge.command.user.ListContacts │ │ │ │ - slidge.command.user.ListGroups │ │ │ │ - slidge.command.user.Login │ │ │ │ - slidge.command.user.CreateGroup │ │ │ │ - slidge.command.user.Unregister │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: Search(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *args) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: SyncContacts(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:attribute:: NODE │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Name of the node used for ad-hoc commands │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CHAT_COMMAND │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Text to send to the gateway to trigger the command via a message │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *_) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: ListContacts(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:attribute:: NAME │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Friendly name of the command, eg: "do something with stuff" │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: HELP │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Long description of what the command does │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: NODE │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Name of the node used for ad-hoc commands │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CHAT_COMMAND │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Text to send to the gateway to trigger the command via a message │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *_) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: ListGroups(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:attribute:: NAME │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Friendly name of the command, eg: "do something with stuff" │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: HELP │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Long description of what the command does │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: NODE │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Name of the node used for ad-hoc commands │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CHAT_COMMAND │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Text to send to the gateway to trigger the command via a message │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *_) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: Login(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:attribute:: NODE │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Name of the node used for ad-hoc commands │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CHAT_COMMAND │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Text to send to the gateway to trigger the command via a message │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CATEGORY │ │ │ │ - :type: Optional[str] │ │ │ │ - │ │ │ │ - If used, the command will be under this top-level category. │ │ │ │ - Use the same string for several commands to group them. │ │ │ │ - This hierarchy only used for the adhoc interface, not the chat command │ │ │ │ - interface. │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *_) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: CreateGroup(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:attribute:: NODE │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Name of the node used for ad-hoc commands │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CHAT_COMMAND │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Text to send to the gateway to trigger the command via a message │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *_) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ -.. py:class:: Unregister(xmpp) │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ │ - Abstract base class to implement gateway commands (chatbot and ad-hoc) │ │ │ │ - │ │ │ │ - .. py:attribute:: NODE │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Name of the node used for ad-hoc commands │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CHAT_COMMAND │ │ │ │ - :type: str │ │ │ │ - │ │ │ │ - Text to send to the gateway to trigger the command via a message │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:attribute:: CATEGORY │ │ │ │ - :type: Optional[str] │ │ │ │ - │ │ │ │ - If used, the command will be under this top-level category. │ │ │ │ - Use the same string for several commands to group them. │ │ │ │ - This hierarchy only used for the adhoc interface, not the chat command │ │ │ │ - interface. │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: run(session, _ifrom, *_) │ │ │ │ - :async: │ │ │ │ - │ │ │ │ - Entry point of the command │ │ │ │ - │ │ │ │ - :param session: If triggered by a registered user, its slidge Session │ │ │ │ - :param ifrom: JID of the command-triggering entity │ │ │ │ - :param args: When triggered via chatbot type message, additional words │ │ │ │ - after the CHAT_COMMAND string was passed │ │ │ │ - │ │ │ │ - :return: Either a TableResult, a Form, a Confirmation, a text, or None │ │ │ │ - │ │ │ │ - │ │ │ │ - .. py:method:: raise_if_not_authorized(jid) │ │ │ │ - │ │ │ │ - Raise an appropriate error is jid is not authorized to use the command │ │ │ │ - │ │ │ │ - :param jid: jid of the entity trying to access the command │ │ │ │ - :return:session of JID if it exists │ │ │ │ - │ │ │ │ - │ │ │ │ - │ │ │ ├── ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/contact/index.rst.txt │ │ │ │ @@ -55,14 +55,34 @@ │ │ │ │ This will use :xep:`0363` to impersonate the XMPP user in order. │ │ │ │ │ │ │ │ .. py:property:: name │ │ │ │ │ │ │ │ Friendly name of the contact, as it should appear in the user's roster │ │ │ │ │ │ │ │ │ │ │ │ + .. py:property:: avatar_id │ │ │ │ + :type: Optional[slidge.util.types.AvatarIdType] │ │ │ │ + │ │ │ │ + The unique ID of this entity's avatar. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:property:: avatar │ │ │ │ + :type: Optional[slidge.util.types.AvatarIdType] │ │ │ │ + │ │ │ │ + This property can be used to set the avatar, but │ │ │ │ + :py:meth:`~.AvatarMixin.set_avatar()` should be preferred because you can │ │ │ │ + provide a unique ID for the avatar for efficient caching. │ │ │ │ + Setting this is OKish in case the avatar type is a URL or a local path │ │ │ │ + that can act as a legacy ID. │ │ │ │ + │ │ │ │ + Python's ``property`` is abused here to maintain backwards │ │ │ │ + compatibility, but when getting it you actually get the avatar legacy │ │ │ │ + ID. │ │ │ │ + │ │ │ │ + │ │ │ │ .. py:attribute:: RESOURCE │ │ │ │ :type: str │ │ │ │ :value: 'slidge' │ │ │ │ │ │ │ │ A full JID, including a resource part is required for chat states (and maybe other stuff) │ │ │ │ to work properly. This is the name of the resource the contacts will use. │ │ │ │ │ │ │ │ @@ -187,8 +207,226 @@ │ │ │ │ │ │ │ │ It the legacy network doesn't like that you fetch too many profiles on startup, │ │ │ │ it's also possible to fetch it here, which will be called when XMPP clients │ │ │ │ of the user request the vcard, if it hasn't been fetched before │ │ │ │ :return: │ │ │ │ │ │ │ │ │ │ │ │ + .. py:method:: set_avatar(a, avatar_unique_id = None, blocking=False, cancel=True) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Set an avatar for this entity │ │ │ │ + │ │ │ │ + :param a: │ │ │ │ + :param avatar_unique_id: │ │ │ │ + :param blocking: │ │ │ │ + :param cancel: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: invite_to(muc, reason = None, password = None, **send_kwargs) │ │ │ │ + │ │ │ │ + Send an invitation to join a group (:xep:`0249`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param muc: the muc the user is invited to │ │ │ │ + :param reason: a text explaining why the user should join this muc │ │ │ │ + :param password: maybe this will make sense later? not sure │ │ │ │ + :param send_kwargs: additional kwargs to be passed to _send() │ │ │ │ + (internal use by slidge) │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: active(**kwargs) │ │ │ │ + │ │ │ │ + Send an "active" chat state (:xep:`0085`) from this │ │ │ │ + :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: composing(**kwargs) │ │ │ │ + │ │ │ │ + Send a "composing" (ie "typing notification") chat state (:xep:`0085`) │ │ │ │ + from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: paused(**kwargs) │ │ │ │ + │ │ │ │ + Send a "paused" (ie "typing paused notification") chat state │ │ │ │ + (:xep:`0085`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: inactive(**kwargs) │ │ │ │ + │ │ │ │ + Send an "inactive" (ie "contact has not interacted with the chat session │ │ │ │ + interface for an intermediate period of time") chat state (:xep:`0085`) │ │ │ │ + from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: gone(**kwargs) │ │ │ │ + │ │ │ │ + Send a "gone" (ie "contact has not interacted with the chat session interface, │ │ │ │ + system, or device for a relatively long period of time") chat state │ │ │ │ + (:xep:`0085`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: send_text(body, legacy_msg_id = None, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction=False, correction_event_id = None, link_previews = None, **send_kwargs) │ │ │ │ + │ │ │ │ + Send a text message from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param body: Content of the message │ │ │ │ + :param legacy_msg_id: If you want to be able to transport read markers from the gateway │ │ │ │ + user to the legacy network, specify this │ │ │ │ + :param when: when the message was sent, for a "delay" tag (:xep:`0203`) │ │ │ │ + :param reply_to: Quote another message (:xep:`0461`) │ │ │ │ + :param hints: │ │ │ │ + :param thread: │ │ │ │ + :param carbon: (only used if called on a :class:`LegacyContact`) │ │ │ │ + Set this to ``True`` if this is actually a message sent **to** the │ │ │ │ + :class:`LegacyContact` by the :term:`User`. │ │ │ │ + Use this to synchronize outgoing history for legacy official apps. │ │ │ │ + :param correction: whether this message is a correction or not │ │ │ │ + :param correction_event_id: in the case where an ID is associated with the legacy │ │ │ │ + 'correction event', specify it here to use it on the XMPP side. If not specified, │ │ │ │ + a random ID will be used. │ │ │ │ + :param link_previews: A little of sender (or server, or gateway)-generated │ │ │ │ + previews of URLs linked in the body. │ │ │ │ + :param archive_only: (only in groups) Do not send this message to user, │ │ │ │ + but store it in the archive. Meant to be used during ``MUC.backfill()`` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: correct(legacy_msg_id, new_text, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction_event_id = None, link_previews = None, **send_kwargs) │ │ │ │ + │ │ │ │ + Modify a message that was previously sent by this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + Uses last message correction (:xep:`0308`) │ │ │ │ + │ │ │ │ + :param new_text: New content of the message │ │ │ │ + :param legacy_msg_id: The legacy message ID of the message to correct │ │ │ │ + :param when: when the message was sent, for a "delay" tag (:xep:`0203`) │ │ │ │ + :param reply_to: Quote another message (:xep:`0461`) │ │ │ │ + :param hints: │ │ │ │ + :param thread: │ │ │ │ + :param carbon: (only in 1:1) Reflect a message sent to this ``Contact`` by the user. │ │ │ │ + Use this to synchronize outgoing history for legacy official apps. │ │ │ │ + :param archive_only: (only in groups) Do not send this message to user, │ │ │ │ + but store it in the archive. Meant to be used during ``MUC.backfill()`` │ │ │ │ + :param correction_event_id: in the case where an ID is associated with the legacy │ │ │ │ + 'correction event', specify it here to use it on the XMPP side. If not specified, │ │ │ │ + a random ID will be used. │ │ │ │ + :param link_previews: A little of sender (or server, or gateway)-generated │ │ │ │ + previews of URLs linked in the body. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: react(legacy_msg_id, emojis = (), thread = None, **kwargs) │ │ │ │ + │ │ │ │ + Send a reaction (:xep:`0444`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message which the reaction refers to. │ │ │ │ + :param emojis: An iterable of emojis used as reactions │ │ │ │ + :param thread: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: retract(legacy_msg_id, thread = None, **kwargs) │ │ │ │ + │ │ │ │ + Send a message retraction (:XEP:`0424`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: Legacy ID of the message to delete │ │ │ │ + :param thread: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: send_file(file_path = None, legacy_msg_id = None, *, data_stream = None, data = None, file_url = None, file_name = None, content_type = None, reply_to = None, when = None, caption = None, legacy_file_id = None, thread = None, **kwargs) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Send a single file from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param file_path: Path to the attachment │ │ │ │ + :param data_stream: Alternatively, a stream of bytes (such as a File object) │ │ │ │ + :param data: Alternatively, a bytes object │ │ │ │ + :param file_url: Alternatively, a URL │ │ │ │ + :param file_name: How the file should be named. │ │ │ │ + :param content_type: MIME type, inferred from filename if not given │ │ │ │ + :param legacy_msg_id: If you want to be able to transport read markers from the gateway │ │ │ │ + user to the legacy network, specify this │ │ │ │ + :param reply_to: Quote another message (:xep:`0461`) │ │ │ │ + :param when: when the file was sent, for a "delay" tag (:xep:`0203`) │ │ │ │ + :param caption: an optional text that is linked to the file │ │ │ │ + :param legacy_file_id: A unique identifier for the file on the legacy network. │ │ │ │ + Plugins should try their best to provide it, to avoid duplicates. │ │ │ │ + :param thread: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: ack(legacy_msg_id, **kwargs) │ │ │ │ + │ │ │ │ + Send an "acknowledged" message marker (:xep:`0333`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message this marker refers to │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: received(legacy_msg_id, **kwargs) │ │ │ │ + │ │ │ │ + Send a "received" message marker (:xep:`0333`) from this :term:`XMPP Entity`. │ │ │ │ + If called on a :class:`LegacyContact`, also send a delivery receipt │ │ │ │ + marker (:xep:`0184`). │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message this marker refers to │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: displayed(legacy_msg_id, **kwargs) │ │ │ │ + │ │ │ │ + Send a "displayed" message marker (:xep:`0333`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message this marker refers to │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: online(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "online" presence from this contact to the user. │ │ │ │ + │ │ │ │ + :param status: Arbitrary text, details of the status, eg: "Listening to Britney Spears" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: away(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "away" presence from this contact to the user. │ │ │ │ + │ │ │ │ + This is a global status, as opposed to :meth:`.LegacyContact.inactive` │ │ │ │ + which concerns a specific conversation, ie a specific "chat window" │ │ │ │ + │ │ │ │ + :param status: Arbitrary text, details of the status, eg: "Gone to fight capitalism" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: extended_away(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "extended away" presence from this contact to the user. │ │ │ │ + │ │ │ │ + This is a global status, as opposed to :meth:`.LegacyContact.inactive` │ │ │ │ + which concerns a specific conversation, ie a specific "chat window" │ │ │ │ + │ │ │ │ + :param status: Arbitrary text, details of the status, eg: "Gone to fight capitalism" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: busy(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send a "busy" (ie, "dnd") presence from this contact to the user, │ │ │ │ + │ │ │ │ + :param status: eg: "Trying to make sense of XEP-0100" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: offline(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "offline" presence from this contact to the user. │ │ │ │ + │ │ │ │ + :param status: eg: "Trying to make sense of XEP-0100" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: available_emojis(legacy_msg_id = None) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Override this to restrict the subset of reactions this recipient │ │ │ │ + can handle. │ │ │ │ + │ │ │ │ + :return: A set of emojis or None if any emoji is allowed │ │ │ │ + │ │ │ │ + │ │ │ ├── ./usr/share/doc/python-slidge-doc/html/_sources/dev/api/slidge/contact/index.rst.txt │ │ │ │ @@ -59,14 +59,34 @@ │ │ │ │ This will use :xep:`0363` to impersonate the XMPP user in order. │ │ │ │ │ │ │ │ .. py:property:: name │ │ │ │ │ │ │ │ Friendly name of the contact, as it should appear in the user's roster │ │ │ │ │ │ │ │ │ │ │ │ + .. py:property:: avatar_id │ │ │ │ + :type: Optional[slidge.util.types.AvatarIdType] │ │ │ │ + │ │ │ │ + The unique ID of this entity's avatar. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:property:: avatar │ │ │ │ + :type: Optional[slidge.util.types.AvatarIdType] │ │ │ │ + │ │ │ │ + This property can be used to set the avatar, but │ │ │ │ + :py:meth:`~.AvatarMixin.set_avatar()` should be preferred because you can │ │ │ │ + provide a unique ID for the avatar for efficient caching. │ │ │ │ + Setting this is OKish in case the avatar type is a URL or a local path │ │ │ │ + that can act as a legacy ID. │ │ │ │ + │ │ │ │ + Python's ``property`` is abused here to maintain backwards │ │ │ │ + compatibility, but when getting it you actually get the avatar legacy │ │ │ │ + ID. │ │ │ │ + │ │ │ │ + │ │ │ │ .. py:attribute:: RESOURCE │ │ │ │ :type: str │ │ │ │ :value: 'slidge' │ │ │ │ │ │ │ │ A full JID, including a resource part is required for chat states (and maybe other stuff) │ │ │ │ to work properly. This is the name of the resource the contacts will use. │ │ │ │ │ │ │ │ @@ -191,14 +211,232 @@ │ │ │ │ │ │ │ │ It the legacy network doesn't like that you fetch too many profiles on startup, │ │ │ │ it's also possible to fetch it here, which will be called when XMPP clients │ │ │ │ of the user request the vcard, if it hasn't been fetched before │ │ │ │ :return: │ │ │ │ │ │ │ │ │ │ │ │ + .. py:method:: set_avatar(a, avatar_unique_id = None, blocking=False, cancel=True) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Set an avatar for this entity │ │ │ │ + │ │ │ │ + :param a: │ │ │ │ + :param avatar_unique_id: │ │ │ │ + :param blocking: │ │ │ │ + :param cancel: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: invite_to(muc, reason = None, password = None, **send_kwargs) │ │ │ │ + │ │ │ │ + Send an invitation to join a group (:xep:`0249`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param muc: the muc the user is invited to │ │ │ │ + :param reason: a text explaining why the user should join this muc │ │ │ │ + :param password: maybe this will make sense later? not sure │ │ │ │ + :param send_kwargs: additional kwargs to be passed to _send() │ │ │ │ + (internal use by slidge) │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: active(**kwargs) │ │ │ │ + │ │ │ │ + Send an "active" chat state (:xep:`0085`) from this │ │ │ │ + :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: composing(**kwargs) │ │ │ │ + │ │ │ │ + Send a "composing" (ie "typing notification") chat state (:xep:`0085`) │ │ │ │ + from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: paused(**kwargs) │ │ │ │ + │ │ │ │ + Send a "paused" (ie "typing paused notification") chat state │ │ │ │ + (:xep:`0085`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: inactive(**kwargs) │ │ │ │ + │ │ │ │ + Send an "inactive" (ie "contact has not interacted with the chat session │ │ │ │ + interface for an intermediate period of time") chat state (:xep:`0085`) │ │ │ │ + from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: gone(**kwargs) │ │ │ │ + │ │ │ │ + Send a "gone" (ie "contact has not interacted with the chat session interface, │ │ │ │ + system, or device for a relatively long period of time") chat state │ │ │ │ + (:xep:`0085`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: send_text(body, legacy_msg_id = None, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction=False, correction_event_id = None, link_previews = None, **send_kwargs) │ │ │ │ + │ │ │ │ + Send a text message from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param body: Content of the message │ │ │ │ + :param legacy_msg_id: If you want to be able to transport read markers from the gateway │ │ │ │ + user to the legacy network, specify this │ │ │ │ + :param when: when the message was sent, for a "delay" tag (:xep:`0203`) │ │ │ │ + :param reply_to: Quote another message (:xep:`0461`) │ │ │ │ + :param hints: │ │ │ │ + :param thread: │ │ │ │ + :param carbon: (only used if called on a :class:`LegacyContact`) │ │ │ │ + Set this to ``True`` if this is actually a message sent **to** the │ │ │ │ + :class:`LegacyContact` by the :term:`User`. │ │ │ │ + Use this to synchronize outgoing history for legacy official apps. │ │ │ │ + :param correction: whether this message is a correction or not │ │ │ │ + :param correction_event_id: in the case where an ID is associated with the legacy │ │ │ │ + 'correction event', specify it here to use it on the XMPP side. If not specified, │ │ │ │ + a random ID will be used. │ │ │ │ + :param link_previews: A little of sender (or server, or gateway)-generated │ │ │ │ + previews of URLs linked in the body. │ │ │ │ + :param archive_only: (only in groups) Do not send this message to user, │ │ │ │ + but store it in the archive. Meant to be used during ``MUC.backfill()`` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: correct(legacy_msg_id, new_text, *, when = None, reply_to = None, thread = None, hints = None, carbon=False, archive_only=False, correction_event_id = None, link_previews = None, **send_kwargs) │ │ │ │ + │ │ │ │ + Modify a message that was previously sent by this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + Uses last message correction (:xep:`0308`) │ │ │ │ + │ │ │ │ + :param new_text: New content of the message │ │ │ │ + :param legacy_msg_id: The legacy message ID of the message to correct │ │ │ │ + :param when: when the message was sent, for a "delay" tag (:xep:`0203`) │ │ │ │ + :param reply_to: Quote another message (:xep:`0461`) │ │ │ │ + :param hints: │ │ │ │ + :param thread: │ │ │ │ + :param carbon: (only in 1:1) Reflect a message sent to this ``Contact`` by the user. │ │ │ │ + Use this to synchronize outgoing history for legacy official apps. │ │ │ │ + :param archive_only: (only in groups) Do not send this message to user, │ │ │ │ + but store it in the archive. Meant to be used during ``MUC.backfill()`` │ │ │ │ + :param correction_event_id: in the case where an ID is associated with the legacy │ │ │ │ + 'correction event', specify it here to use it on the XMPP side. If not specified, │ │ │ │ + a random ID will be used. │ │ │ │ + :param link_previews: A little of sender (or server, or gateway)-generated │ │ │ │ + previews of URLs linked in the body. │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: react(legacy_msg_id, emojis = (), thread = None, **kwargs) │ │ │ │ + │ │ │ │ + Send a reaction (:xep:`0444`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message which the reaction refers to. │ │ │ │ + :param emojis: An iterable of emojis used as reactions │ │ │ │ + :param thread: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: retract(legacy_msg_id, thread = None, **kwargs) │ │ │ │ + │ │ │ │ + Send a message retraction (:XEP:`0424`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: Legacy ID of the message to delete │ │ │ │ + :param thread: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: send_file(file_path = None, legacy_msg_id = None, *, data_stream = None, data = None, file_url = None, file_name = None, content_type = None, reply_to = None, when = None, caption = None, legacy_file_id = None, thread = None, **kwargs) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Send a single file from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param file_path: Path to the attachment │ │ │ │ + :param data_stream: Alternatively, a stream of bytes (such as a File object) │ │ │ │ + :param data: Alternatively, a bytes object │ │ │ │ + :param file_url: Alternatively, a URL │ │ │ │ + :param file_name: How the file should be named. │ │ │ │ + :param content_type: MIME type, inferred from filename if not given │ │ │ │ + :param legacy_msg_id: If you want to be able to transport read markers from the gateway │ │ │ │ + user to the legacy network, specify this │ │ │ │ + :param reply_to: Quote another message (:xep:`0461`) │ │ │ │ + :param when: when the file was sent, for a "delay" tag (:xep:`0203`) │ │ │ │ + :param caption: an optional text that is linked to the file │ │ │ │ + :param legacy_file_id: A unique identifier for the file on the legacy network. │ │ │ │ + Plugins should try their best to provide it, to avoid duplicates. │ │ │ │ + :param thread: │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: ack(legacy_msg_id, **kwargs) │ │ │ │ + │ │ │ │ + Send an "acknowledged" message marker (:xep:`0333`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message this marker refers to │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: received(legacy_msg_id, **kwargs) │ │ │ │ + │ │ │ │ + Send a "received" message marker (:xep:`0333`) from this :term:`XMPP Entity`. │ │ │ │ + If called on a :class:`LegacyContact`, also send a delivery receipt │ │ │ │ + marker (:xep:`0184`). │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message this marker refers to │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: displayed(legacy_msg_id, **kwargs) │ │ │ │ + │ │ │ │ + Send a "displayed" message marker (:xep:`0333`) from this :term:`XMPP Entity`. │ │ │ │ + │ │ │ │ + :param legacy_msg_id: The message this marker refers to │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: online(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "online" presence from this contact to the user. │ │ │ │ + │ │ │ │ + :param status: Arbitrary text, details of the status, eg: "Listening to Britney Spears" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: away(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "away" presence from this contact to the user. │ │ │ │ + │ │ │ │ + This is a global status, as opposed to :meth:`.LegacyContact.inactive` │ │ │ │ + which concerns a specific conversation, ie a specific "chat window" │ │ │ │ + │ │ │ │ + :param status: Arbitrary text, details of the status, eg: "Gone to fight capitalism" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: extended_away(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "extended away" presence from this contact to the user. │ │ │ │ + │ │ │ │ + This is a global status, as opposed to :meth:`.LegacyContact.inactive` │ │ │ │ + which concerns a specific conversation, ie a specific "chat window" │ │ │ │ + │ │ │ │ + :param status: Arbitrary text, details of the status, eg: "Gone to fight capitalism" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: busy(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send a "busy" (ie, "dnd") presence from this contact to the user, │ │ │ │ + │ │ │ │ + :param status: eg: "Trying to make sense of XEP-0100" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: offline(status = None, last_seen = None) │ │ │ │ + │ │ │ │ + Send an "offline" presence from this contact to the user. │ │ │ │ + │ │ │ │ + :param status: eg: "Trying to make sense of XEP-0100" │ │ │ │ + :param last_seen: For :xep:`0319` │ │ │ │ + │ │ │ │ + │ │ │ │ + .. py:method:: available_emojis(legacy_msg_id = None) │ │ │ │ + :async: │ │ │ │ + │ │ │ │ + Override this to restrict the subset of reactions this recipient │ │ │ │ + can handle. │ │ │ │ + │ │ │ │ + :return: A set of emojis or None if any emoji is allowed │ │ │ │ + │ │ │ │ + │ │ │ │ │ │ │ │ .. py:class:: LegacyRoster(session) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Virtual roster of a gateway user, that allows to represent all │ │ │ ├── ./usr/share/doc/python-slidge-doc/html/dev/api/slidge/command/admin/index.html │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ │ │ │ │ │ │ │ -