Merge remote-tracking branch 'origin/master'

# Conflicts:
#	Pipfile
#	Pipfile.lock
This commit is contained in:
Nexus 2024-09-15 20:25:55 +01:00
commit 0a694476be
6 changed files with 271 additions and 35 deletions

View file

@ -10,7 +10,8 @@ yt-dlp = "*"
humanize = "*" humanize = "*"
httpx = "*" httpx = "*"
ollama = "*" ollama = "*"
nio-bot = "==1.2.0a2" nio-bot = {git = "git+https://github.com/nexy7574/nio-bot.git"}
thefuzz = "*"
[dev-packages] [dev-packages]
ruff = "*" ruff = "*"

179
Pipfile.lock generated
View file

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "7b3a2386eae7c5a43a5b76a069fd79e66e3fb045207ec4623050b38923f6863c" "sha256": "6da0a4d5a8f4ae40d08db21d7dae5b6c579fb9b750f3ad379f7f286bebd6ba99"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -671,11 +671,11 @@
}, },
"idna": { "idna": {
"hashes": [ "hashes": [
"sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac", "sha256:69297d5da0cc9281c77efffb4e730254dd45943f45bbfb461de5991713989b1e",
"sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603" "sha256:e5c5dafde284f26e9e0f28f6ea2d6400abd5ca099864a67f576f3981c6476124"
], ],
"markers": "python_version >= '3.6'", "markers": "python_version >= '3.6'",
"version": "==3.8" "version": "==3.9"
}, },
"iso8601": { "iso8601": {
"hashes": [ "hashes": [
@ -824,13 +824,9 @@
"version": "==1.47.0" "version": "==1.47.0"
}, },
"nio-bot": { "nio-bot": {
"hashes": [ "git": "git+https://github.com/nexy7574/nio-bot.git",
"sha256:915e6c55f9f960c927a417dd039f3cf612f97b3709a3d8e1b6008de3258584a9", "markers": "python_version < '3.13' and python_version >= '3.9'",
"sha256:bd5b483a62b0d1ccff64d6960f579da2c641c15c73222b4038f24573c7a092a4" "ref": "46821599e36868d97d1961aee2ea3d0108de81cf"
],
"index": "pypi",
"markers": "python_version < '3.14' and python_version >= '3.9'",
"version": "==1.2.0a2"
}, },
"ollama": { "ollama": {
"hashes": [ "hashes": [
@ -1147,6 +1143,120 @@
], ],
"version": "==2024.2" "version": "==2024.2"
}, },
"rapidfuzz": {
"hashes": [
"sha256:03126f9a040ff21d2a110610bfd6b93b79377ce8b4121edcb791d61b7df6eec5",
"sha256:048d55d36c02c6685a2b2741688503c3d15149694506655b6169dcfd3b6c2585",
"sha256:057bb03f39e285047d7e9412e01ecf31bb2d42b9466a5409d715d587460dd59b",
"sha256:0b1c2d504eddf97bc0f2eba422c8915576dbf025062ceaca2d68aecd66324ad9",
"sha256:0d1415a732ee75e74a90af12020b77a0b396b36c60afae1bde3208a78cd2c9fc",
"sha256:0e9125377fa3d21a8abd4fbdbcf1c27be73e8b1850f0b61b5b711364bf3b59db",
"sha256:110b6294396bc0a447648627479c9320f095c2034c0537f687592e0f58622638",
"sha256:111a20a3c090cf244d9406e60500b6c34b2375ba3a5009e2b38fd806fe38e337",
"sha256:13d8675a1fa7e2b19650ca7ef9a6ec01391d4bb12ab9e0793e8eb024538b4a34",
"sha256:18669bb6cdf7d40738526d37e550df09ba065b5a7560f3d802287988b6cb63cf",
"sha256:19c64d8ddb2940b42a4567b23f1681af77f50a5ff6c9b8e85daba079c210716e",
"sha256:1dc516ac6d32027be2b0196bedf6d977ac26debd09ca182376322ad620460feb",
"sha256:1de91e7fd7f525e10ea79a6e62c559d1b0278ec097ad83d9da378b6fab65a265",
"sha256:1ee2086f490cb501d86b7e386c1eb4e3a0ccbb0c99067089efaa8c79012c8952",
"sha256:1ef6a1a8f0b12f8722f595f15c62950c9a02d5abc64742561299ffd49f6c6944",
"sha256:1f1a33e84056b7892c721d84475d3bde49a145126bc4c6efe0d6d0d59cb31c29",
"sha256:22589c0b8ccc6c391ce7f776c93a8c92c96ab8d34e1a19f1bd2b12a235332632",
"sha256:2379e0b2578ad3ac7004f223251550f08bca873ff76c169b09410ec562ad78d8",
"sha256:268f8e1ca50fc61c0736f3fe9d47891424adf62d96ed30196f30f4bd8216b41f",
"sha256:3171653212218a162540a3c8eb8ae7d3dcc8548540b69eaecaf3b47c14d89c90",
"sha256:32532af1d70c6ec02ea5ac7ee2766dfff7c8ae8c761abfe8da9e527314e634e8",
"sha256:3445a35c4c8d288f2b2011eb61bce1227c633ce85a3154e727170f37c0266bb2",
"sha256:3492c7a42b7fa9f0051d7fcce9893e95ed91c97c9ec7fb64346f3e070dd318ed",
"sha256:35d3044cb635ca6b1b2b7b67b3597bd19f34f1753b129eb6d2ae04cf98cd3945",
"sha256:364587827d7cbd41afa0782adc2d2d19e3f07d355b0750a02a8e33ad27a9c368",
"sha256:3665b92e788578c3bb334bd5b5fa7ee1a84bafd68be438e3110861d1578c63a0",
"sha256:36dd6e820379c37a1ffefc8a52b648758e867cd9d78ee5b5dc0c9a6a10145378",
"sha256:3ed5adb752f4308fcc8f4fb6f8eb7aa4082f9d12676fda0a74fa5564242a8107",
"sha256:47e92c155a14f44511ea8ebcc6bc1535a1fe8d0a7d67ad3cc47ba61606df7bcf",
"sha256:4ff196996240db7075f62c7bc4506f40a3c80cd4ae3ab0e79ac6892283a90859",
"sha256:521c58c72ed8a612b25cda378ff10dee17e6deb4ee99a070b723519a345527b9",
"sha256:5551d68264c1bb6943f542da83a4dc8940ede52c5847ef158698799cc28d14f5",
"sha256:578302828dd97ee2ba507d2f71d62164e28d2fc7bc73aad0d2d1d2afc021a5d5",
"sha256:579d107102c0725f7c79b4e79f16d3cf4d7c9208f29c66b064fa1fd4641d5155",
"sha256:591908240f4085e2ade5b685c6e8346e2ed44932cffeaac2fb32ddac95b55c7f",
"sha256:5a93c9e60904cb76e7aefef67afffb8b37c4894f81415ed513db090f29d01101",
"sha256:5d1eff95362f993b0276fd3839aee48625b09aac8938bb0c23b40d219cba5dc5",
"sha256:5d5262383634626eb45c536017204b8163a03bc43bda880cf1bdd7885db9a163",
"sha256:5f8bf3f0d02935751d8660abda6044821a861f6229f7d359f98bcdcc7e66c39b",
"sha256:603f48f621272a448ff58bb556feb4371252a02156593303391f5c3281dfaeac",
"sha256:675b75412a943bb83f1f53e2e54fd18c80ef15ed642dc6eb0382d1949419d904",
"sha256:68bd888eafd07b09585dcc8bc2716c5ecdb7eed62827470664d25588982b2873",
"sha256:696a79018ef989bf1c9abd9005841cee18005ccad4748bad8a4c274c47b6241a",
"sha256:6c5b32875646cb7f60c193ade99b2e4b124f19583492115293cd00f6fb198b17",
"sha256:6f83221db5755b8f34222e40607d87f1176a8d5d4dbda4a55a0f0b67d588a69c",
"sha256:6fb76e5a21034f0307c51c5a2fc08856f698c53a4c593b17d291f7d6e9d09ca3",
"sha256:7abe2dbae81120a64bb4f8d3fcafe9122f328c9f86d7f327f174187a5af4ed86",
"sha256:7b702de95666a1f7d5c6b47eacadfe2d2794af3742d63d2134767d13e5d1c713",
"sha256:7c20c1474b068c4bd45bf2fd0ad548df284f74e9a14a68b06746c56e3aa8eb70",
"sha256:836f4d88b8bd0fff2ebe815dcaab8aa6c8d07d1d566a7e21dd137cf6fe11ed5b",
"sha256:8501000a5eb8037c4b56857724797fe5a8b01853c363de91c8d0d0ad56bef319",
"sha256:8772b745668260c5c4d069c678bbaa68812e6c69830f3771eaad521af7bc17f8",
"sha256:8b01153c7466d0bad48fba77a303d5a768e66f24b763853469f47220b3de4661",
"sha256:8d92c552c6b7577402afdd547dcf5d31ea6c8ae31ad03f78226e055cfa37f3c6",
"sha256:9030e7238c0df51aed5c9c5ed8eee2bdd47a2ae788e562c1454af2851c3d1906",
"sha256:90db86fa196eecf96cb6db09f1083912ea945c50c57188039392d810d0b784e1",
"sha256:948dcee7aaa1cd14358b2a7ef08bf0be42bf89049c3a906669874a715fc2c937",
"sha256:94baaeea0b4f8632a6da69348b1e741043eba18d4e3088d674d3f76586b6223d",
"sha256:953b3780765c8846866faf891ee4290f6a41a6dacf4fbcd3926f78c9de412ca6",
"sha256:95b8292383e717e10455f2c917df45032b611141e43d1adf70f71b1566136b11",
"sha256:965693c2e9efd425b0f059f5be50ef830129f82892fa1858e220e424d9d0160f",
"sha256:97f2ce529d2a70a60c290f6ab269a2bbf1d3b47b9724dccc84339b85f7afb044",
"sha256:9b6a5de507b9be6de688dae40143b656f7a93b10995fb8bd90deb555e7875c60",
"sha256:9dba13d86806fcf3fe9c9919f58575e0090eadfb89c058bde02bcc7ab24e4548",
"sha256:9dc86aa6b29d174713c5f4caac35ffb7f232e3e649113e8d13812b35ab078228",
"sha256:9dcd14cf4876f04b488f6e54a7abd3e9b31db5f5a6aba0ce90659917aaa8c088",
"sha256:a3b36e1c61b796ae1777f3e9e11fd39898b09d351c9384baf6e3b7e6191d8ced",
"sha256:a3c0783910911f4f24655826d007c9f4360f08107410952c01ee3df98c713eb2",
"sha256:a40184c67db8252593ec518e17fb8a6e86d7259dc9f2d6c0bf4ff4db8cf1ad4b",
"sha256:a4da514d13f4433e16960a17f05b67e0af30ac771719c9a9fb877e5004f74477",
"sha256:a8feac9006d5c9758438906f093befffc4290de75663dbb2098461df7c7d28dd",
"sha256:a93cd834b3c315ab437f0565ee3a2f42dd33768dc885ccbabf9710b131cf70d2",
"sha256:ae1a38bade755aa9dd95a81cda949e1bf9cd92b79341ccc5e2189c9e7bdfc5ec",
"sha256:b23806fbdd6b510ba9ac93bb72d503066263b0fba44b71b835be9f063a84025f",
"sha256:b4f86e09d3064dca0b014cd48688964036a904a2d28048f00c8f4640796d06a8",
"sha256:b997ff3b39d4cee9fb025d6c46b0a24bd67595ce5a5b652a97fb3a9d60beb651",
"sha256:be3a1fc3e2ab3bdf93dc0c83c00acca8afd2a80602297d96cf4a0ba028333cdf",
"sha256:c12d180b17a22d107c8747de9c68d0b9c1d15dcda5445ff9bf9f4ccfb67c3e16",
"sha256:c1318d42610c26dcd68bd3279a1bf9e3605377260867c9a8ed22eafc1bd93a7c",
"sha256:c33211cfff9aec425bb1bfedaf94afcf337063aa273754f22779d6dadebef4c2",
"sha256:c4eebf6c93af0ae866c22b403a84747580bb5c10f0d7b51c82a87f25405d4dcb",
"sha256:c4f28f1930b09a2c300357d8465b388cecb7e8b2f454a5d5425561710b7fd07f",
"sha256:ca66676c8ef6557f9b81c5b2b519097817a7c776a6599b8d6fcc3e16edd216fe",
"sha256:ccf68e30b80e903f2309f90a438dbd640dd98e878eeb5ad361a288051ee5b75c",
"sha256:cd9360e30041690912525a210e48a897b49b230768cc8af1c702e5395690464f",
"sha256:cfa74aac64c85898b93d9c80bb935a96bf64985e28d4ee0f1a3d1f3bf11a5106",
"sha256:d098ce6162eb5e48fceb0745455bc950af059df6113eec83e916c129fca11408",
"sha256:d1230e0f9026851a6a432beaa0ce575dda7b39fe689b576f99a0704fbb81fc9c",
"sha256:d4ba2318ef670ce505f42881a5d2af70f948124646947341a3c6ccb33cd70369",
"sha256:d4e049d5ad61448c9a020d1061eba20944c4887d720c4069724beb6ea1692507",
"sha256:d73ee2df41224c87336448d279b5b6a3a75f36e41dd3dcf538c0c9cce36360d8",
"sha256:d7df9c2194c7ec930b33c991c55dbd0c10951bd25800c0b7a7b571994ebbced5",
"sha256:d95751f505a301af1aaf086c19f34536056d6c8efa91b2240de532a3db57b543",
"sha256:dd5fa6e3c6e0333051c1f3a49f0807b3366f4131c8d6ac8c3e05fd0d0ce3755c",
"sha256:df596ddd3db38aa513d4c0995611267b3946e7cbe5a8761b50e9306dfec720ee",
"sha256:e2957fdad10bb83b1982b02deb3604a3f6911a5e545f518b59c741086f92d152",
"sha256:e3dcfbe7266e74a707173a12a7b355a531f2dcfbdb32f09468e664330da14874",
"sha256:e6d9db2fa4e9be171e9bb31cf2d2575574774966b43f5b951062bb2e67885852",
"sha256:e9012d86c6397edbc9da4ac0132de7f8ee9d6ce857f4194d5684c4ddbcdd1c5c",
"sha256:e9fbf659537d246086d0297628b3795dc3e4a384101ecc01e5791c827b8d7345",
"sha256:ecc24af7f905f3d6efb371a01680116ffea8d64e266618fb9ad1602a9b4f7934",
"sha256:ece45eb2af8b00f90d10f7419322e8804bd42fb1129026f9bfe712c37508b514",
"sha256:f1c7296534c1afb6f495aa95871f14ccdc197c6db42965854e483100df313030",
"sha256:f847fb0fbfb72482b1c05c59cbb275c58a55b73708a7f77a83f8035ee3c86497",
"sha256:fbda3dd68d8b28ccb20ffb6f756fefd9b5ba570a772bedd7643ed441f5793308",
"sha256:fc3e6081069eea61593f1d6839029da53d00c8c9b205c5534853eaa3f031085c",
"sha256:fcf79b686962d7bec458a0babc904cb4fa319808805e036b9d5a531ee6b9b835",
"sha256:fde81b1da9a947f931711febe2e2bee694e891f6d3e6aa6bc02c1884702aea19"
],
"markers": "python_version >= '3.8'",
"version": "==3.9.7"
},
"referencing": { "referencing": {
"hashes": [ "hashes": [
"sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c",
@ -1296,6 +1406,15 @@
"markers": "python_version >= '3.8'", "markers": "python_version >= '3.8'",
"version": "==2.6" "version": "==2.6"
}, },
"thefuzz": {
"hashes": [
"sha256:59729b33556850b90e1093c4cf9e618af6f2e4c985df193fdf3c5b5cf02ca481",
"sha256:7138039a7ecf540da323792d8592ef9902b1d79eb78c147d4f20664de79f3680"
],
"index": "pypi",
"markers": "python_version >= '3.8'",
"version": "==0.22.1"
},
"tortoise-orm": { "tortoise-orm": {
"extras": [ "extras": [
"asyncpg" "asyncpg"
@ -1534,28 +1653,28 @@
"develop": { "develop": {
"ruff": { "ruff": {
"hashes": [ "hashes": [
"sha256:0308610470fcc82969082fc83c76c0d362f562e2f0cdab0586516f03a4e06ec6", "sha256:005256d977021790cc52aa23d78f06bb5090dc0bfbd42de46d49c201533982ae",
"sha256:0b52387d3289ccd227b62102c24714ed75fbba0b16ecc69a923a37e3b5e0aaaa", "sha256:09c72a833fd3551135ceddcba5ebdb68ff89225d30758027280968c9acdc7810",
"sha256:0ea086601b22dc5e7693a78f3fcfc460cceabfdf3bdc36dc898792aba48fbad6", "sha256:381413ec47f71ce1d1c614f7779d88886f406f1fd53d289c77e4e533dc6ea200",
"sha256:34d5efad480193c046c86608dbba2bccdc1c5fd11950fb271f8086e0c763a5d1", "sha256:3a8d42d11fff8d3143ff4da41742a98f8f233bf8890e9fe23077826818f8d680",
"sha256:50e30b437cebef547bd5c3edf9ce81343e5dd7c737cb36ccb4fe83573f3d392e", "sha256:3e42a57b58e3612051a636bc1ac4e6b838679530235520e8f095f7c44f706ff9",
"sha256:549daccee5227282289390b0222d0fbee0275d1db6d514550d65420053021a58", "sha256:482c1e6bfeb615eafc5899127b805d28e387bd87db38b2c0c41d271f5e58d8cc",
"sha256:66dbfea86b663baab8fcae56c59f190caba9398df1488164e2df53e216248baa", "sha256:4d32d87fab433c0cf285c3683dd4dae63be05fd7a1d65b3f5bf7cdd05a6b96fb",
"sha256:7862f42fc1a4aca1ea3ffe8a11f67819d183a5693b228f0bb3a531f5e40336fc", "sha256:51935067740773afdf97493ba9b8231279e9beef0f2a8079188c4776c25688e0",
"sha256:803b96dea21795a6c9d5bfa9e96127cc9c31a1987802ca68f35e5c95aed3fc0d", "sha256:52e75a82bbc9b42e63c08d22ad0ac525117e72aee9729a069d7c4f235fc4d276",
"sha256:932063a03bac394866683e15710c25b8690ccdca1cf192b9a98260332ca93408", "sha256:7291e64d7129f24d1b0c947ec3ec4c0076e958d1475c61202497c6aced35dd19",
"sha256:ac3b5bfbee99973f80aa1b7cbd1c9cbce200883bdd067300c22a6cc1c7fba212", "sha256:794ada3400a0d0b89e3015f1a7e01f4c97320ac665b7bc3ade24b50b54cb2972",
"sha256:ac4b75e898ed189b3708c9ab3fc70b79a433219e1e87193b4f2b77251d058d14", "sha256:7e4e308f16e07c95fc7753fc1aaac690a323b2bb9f4ec5e844a97bb7fbebd748",
"sha256:bedff9e4f004dad5f7f76a9d39c4ca98af526c9b1695068198b3bda8c085ef60", "sha256:800c50371bdcb99b3c1551d5691e14d16d6f07063a518770254227f7f6e8c178",
"sha256:c44536df7b93a587de690e124b89bd47306fddd59398a0fb12afd6133c7b3818", "sha256:8e25ddd9cd63ba1f3bd51c1f09903904a6adf8429df34f17d728a8fa11174253",
"sha256:c4b153fc152af51855458e79e835fb6b933032921756cec9af7d0ba2aa01a258", "sha256:932cd69eefe4daf8c7d92bd6689f7e8182571cb934ea720af218929da7bd7d69",
"sha256:d02a4127a86de23002e694d7ff19f905c51e338c72d8e09b56bfb60e1681724f", "sha256:9ad7dfbd138d09d9a7e6931e6a7e797651ce29becd688be8a0d4d5f8177b4b0c",
"sha256:eebe4ff1967c838a1a9618a5a59a3b0a00406f8d7eefee97c70411fefc353617", "sha256:a50af6e828ee692fb10ff2dfe53f05caecf077f4210fae9677e06a808275754f",
"sha256:f0f8968feea5ce3777c0d8365653d5e91c40c31a81d95824ba61d871a11b8523" "sha256:cf4d3fa53644137f6a4a27a2b397381d16454a1566ae5335855c187fbf67e4f5"
], ],
"index": "pypi", "index": "pypi",
"markers": "python_version >= '3.7'", "markers": "python_version >= '3.7'",
"version": "==0.6.4" "version": "==0.6.5"
} }
} }
} }

View file

@ -57,6 +57,7 @@ bot = TortoiseIntegratedBot(
store_path=str(store.resolve()), store_path=str(store.resolve()),
command_prefix=config["bot"].get("prefix", "h!"), command_prefix=config["bot"].get("prefix", "h!"),
owner_id=config["bot"].get("owner_id") or "@nex:nexy7574.co.uk", owner_id=config["bot"].get("owner_id") or "@nex:nexy7574.co.uk",
auto_read_messages=False
) )
bot.cfg = config bot.cfg = config

View file

@ -219,3 +219,22 @@ class EvalModule(niobot.Module):
await ctx.respond(f"Result of runas: `{result!r}`") await ctx.respond(f"Result of runas: `{result!r}`")
except Exception as e: except Exception as e:
await ctx.respond(f"Error in runas process: `{e!r}`") await ctx.respond(f"Error in runas process: `{e!r}`")
@niobot.command()
@niobot.is_owner()
async def rooms(self, ctx: niobot.Context, operation: str, room: str = None):
"""room management"""
match operation.casefold():
case "join":
result = await self.bot.join(room)
return await ctx.respond(repr(result))
case "leave":
if room.startswith("#"):
resolved = await self.bot.room_resolve_alias(room)
if not isinstance(resolved, niobot.RoomResolveAliasResponse):
return await ctx.respond("Failed to resolve room ID for: %r", room)
room = resolved.room_id
response = await self.bot.room_leave(room)
return await ctx.respond(repr(response))
case _:
return await ctx.respond("Unknown operation.")

80
app/modules/info.py Normal file
View file

@ -0,0 +1,80 @@
import logging
import niobot
from thefuzz import fuzz
class InfoModule(niobot.Module):
log = logging.getLogger(__name__)
@niobot.command(name="room-info", aliases=["ri"])
async def room_info(self, ctx: niobot.Context, room: str = None):
"""
Dumps information about a room in a human readable format
<room> can be a room ID or alias.
"""
room = room or ctx.room.room_id
if room.startswith("#"):
x = await ctx.respond("Resolving room...")
resolved = await ctx.bot.room_resolve_alias(room)
if not isinstance(resolved, niobot.RoomResolveAliasResponse):
resolved: niobot.RoomResolveAliasError
return await x.edit(
"Sorry, I was unable to resolve that room alias.\n\n{!r}".format(
str(resolved).replace(
self.bot.access_token,
"[REDACTED]"
)
)
)
room = resolved.room_id
await x.delete("Room resolved to " + room)
elif room.startswith("!"):
pass
else:
# Search for the room
matches: list[tuple[niobot.MatrixRoom, float]] = []
for room_id, room_obj in ctx.bot.rooms.items():
if ctx.event.sender not in room_obj.users:
self.log.debug("%r is not in %r", ctx.event.sender, room_id)
continue
ratio = fuzz.ratio(room, room_obj.display_name)
self.log.debug("Ratio for %r: %r", room_obj.display_name, ratio)
if ratio > 1:
matches.append((room_obj, ratio))
matches.sort(
key=lambda v: v[1],
reverse=True
)
if not matches:
return await ctx.respond(
"[room] was not a room ID or alias, and I do not know of any mutual rooms that have"
" a similar name."
)
room = matches[0][0].room_id
if room not in ctx.bot.rooms:
return await ctx.respond(
"Unknown room %r. Am I in it?" % room
)
room_obj: niobot.MatrixRoom = ctx.bot.rooms[room]
lines = [
"* Name: {obj.display_name!r} (is explicitly named: {obj.is_named!s})",
"* ID: `{obj.room_id}`",
"* Version: {obj.room_version!s}",
"* Federated? {obj.federate!s}",
"* Encrypted? {obj.encrypted!s}",
"* Guest access: {obj.guest_access!r}",
"* Join rule: {obj.join_rule!r}",
"* History visibility: {obj.history_visibility!r}",
"* User count: {user_count:,} ({invited_count:,} invited)",
"* Avatar URL: `{obj.room_avatar_url!s}`",
"* Canonical alias: {obj.canonical_alias}"
]
body = "\n".join(lines).format(
obj=room_obj,
user_count=room_obj.member_count,
invited_count=room_obj.invited_count
)
return await ctx.respond(body)

View file

@ -21,9 +21,19 @@ class LatencyModule(niobot.Module):
""" """
latency = ctx.latency latency = ctx.latency
homeserver = homeserver or ctx.message.sender.split(":")[1] response = await ctx.respond(
if not homeserver.startswith("http"): "Latency: {:,.2f}ms{}".format(
homeserver = f"https://{homeserver}" latency,
" (pinging homeserver...)"
if homeserver
else ''
)
)
if homeserver:
if not homeserver.startswith("http"):
homeserver = f"https://{homeserver}"
else:
return
parsed = urllib.parse.urlparse(homeserver) parsed = urllib.parse.urlparse(homeserver)
loc = "https://" + parsed.netloc loc = "https://" + parsed.netloc
@ -49,6 +59,12 @@ class LatencyModule(niobot.Module):
else: else:
end = time.perf_counter() end = time.perf_counter()
timings.append(end - start) timings.append(end - start)
if sum(timings) == -5:
return await response.edit(
"Latency: {:,.2f}ms (failed to connect to homeserver)".format(
latency
)
)
fed_latency = sum(timings) / len(timings) * 1000 fed_latency = sum(timings) / len(timings) * 1000
hs_target = homeserver[8:] hs_target = homeserver[8:]