From e71a145dead3f2451af260db953b75dca8bd733f Mon Sep 17 00:00:00 2001 From: Hash Borgir Date: Thu, 7 May 2026 16:57:33 -0500 Subject: [PATCH] updated gitignore --- .gitignore | 1 - plugins/admin.py | 44 +++++++++++++------------------------------- roomstats.db | Bin 12288 -> 12288 bytes 3 files changed, 13 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 6707cd3..71efe90 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,5 @@ chromedriver store funguybot.service __pycache__/ -funguy.conf *.db plugins/disabled/ diff --git a/plugins/admin.py b/plugins/admin.py index f7d37ea..eca5ba9 100644 --- a/plugins/admin.py +++ b/plugins/admin.py @@ -67,7 +67,6 @@ async def _resolve_multiword(bot, room_id, tokens): return mxid, candidate else: # Duplicate display name → fall through to ambiguity handling - # We'll fetch the real members for this candidate and raise UserResolutionError resp = await bot.async_client.joined_members(room_id) matches = [] for member in resp.members: @@ -201,7 +200,7 @@ async def handle_command(room, message, bot, prefix, config): "ban": "ban", "unban": "unban", "invite": "invite", - "whois": "whois", + "userinfo": "whois", # <-- renamed from "whois" to "userinfo" "op": "op", "deop": "deop", "topic": "topic", @@ -239,9 +238,9 @@ async def handle_command(room, message, bot, prefix, config): sub_args = args # ------------------------------------------------------------ - # User-targeting actions + # User-targeting actions (kick, ban, invite, userinfo, op, deop) # ------------------------------------------------------------ - if action in ("kick", "ban", "invite", "whois", "op", "deop"): + if action in ("kick", "ban", "invite", "userinfo", "op", "deop"): if not sub_args: await bot.api.send_text_message( room_id, f"Missing user. Usage: !{cmd} <@user|name> [reason...]" @@ -249,10 +248,6 @@ async def handle_command(room, message, bot, prefix, config): return # For op/deop, the last token might be a power level (number) - # For kick/ban, everything after the name is the reason. - # Strategy: Try progressively longer multi-word names from the start of sub_args. - # For op: if the very last token is a pure integer, it's a power level; rest is the name. - # For kick/ban: everything is name except we can't know the boundary, so just try the whole thing. if action in ("op", "deop"): # Try to parse last token as power level potential_pl = sub_args[-1] @@ -268,7 +263,7 @@ async def handle_command(room, message, bot, prefix, config): name_tokens = sub_args power = None else: - # kick, ban, invite, whois + # kick, ban, invite, userinfo name_tokens = sub_args # entire args is the name power = None @@ -326,7 +321,7 @@ async def handle_command(room, message, bot, prefix, config): await bot.api.send_text_message(room_id, f"❌ Failed to set power: {e}") else: - # For kick/ban/invite: reason is everything after the name tokens + # For kick/ban/invite/userinfo: reason is everything after the name tokens reason = " ".join(sub_args[len(name_tokens):]) if len(sub_args) > len(name_tokens) else "" if action == "kick": @@ -350,7 +345,7 @@ async def handle_command(room, message, bot, prefix, config): except Exception as e: await bot.api.send_text_message(room_id, f"❌ Failed to invite: {e}") - elif action == "whois": + elif action == "userinfo": # <-- was "whois", now "userinfo" try: resp = await bot.async_client.joined_members(room_id) member_info = None @@ -367,7 +362,7 @@ async def handle_command(room, message, bot, prefix, config): ) await bot.api.send_text_message(room_id, msg) except Exception as e: - await bot.api.send_text_message(room_id, f"❌ Failed to get whois: {e}") + await bot.api.send_text_message(room_id, f"❌ Failed to get userinfo: {e}") # ------------------------------------------------------------ # UNBAN @@ -389,7 +384,8 @@ async def handle_command(room, message, bot, prefix, config): await bot.api.send_text_message(room_id, f"❌ Failed to unban: {e}") # ------------------------------------------------------------ - # TOPIC + # TOPIC, ROOMNAME, AVATAR, MEMBERS, BANS, HELP ... + # (unchanged) # ------------------------------------------------------------ elif action == "topic": if not sub_args: @@ -407,9 +403,6 @@ async def handle_command(room, message, bot, prefix, config): except Exception as e: await bot.api.send_text_message(room_id, f"❌ Failed: {e}") - # ------------------------------------------------------------ - # ROOM NAME - # ------------------------------------------------------------ elif action == "roomname": if not sub_args: try: @@ -426,9 +419,6 @@ async def handle_command(room, message, bot, prefix, config): except Exception as e: await bot.api.send_text_message(room_id, f"❌ Failed: {e}") - # ------------------------------------------------------------ - # AVATAR - # ------------------------------------------------------------ elif action == "avatar": if not sub_args: try: @@ -448,9 +438,6 @@ async def handle_command(room, message, bot, prefix, config): except Exception as e: await bot.api.send_text_message(room_id, f"❌ Failed: {e}") - # ------------------------------------------------------------ - # MEMBERS - # ------------------------------------------------------------ elif action == "members": try: resp = await bot.async_client.joined_members(room_id) @@ -472,9 +459,6 @@ async def handle_command(room, message, bot, prefix, config): except Exception as e: await bot.api.send_text_message(room_id, f"❌ Failed to list members: {e}") - # ------------------------------------------------------------ - # BANS - # ------------------------------------------------------------ elif action == "bans": try: banned = await get_banned_users(bot, room_id) @@ -486,9 +470,6 @@ async def handle_command(room, message, bot, prefix, config): except Exception as e: await bot.api.send_text_message(room_id, f"❌ Failed to fetch bans: {e}") - # ------------------------------------------------------------ - # HELP - # ------------------------------------------------------------ elif action in ("help", "modhelp"): help_text = """ **Moderator Commands (standalone or via !admin):** @@ -496,7 +477,7 @@ async def handle_command(room, message, bot, prefix, config): - `!ban <@user|name> [reason]` – Ban a user - `!unban <@user:domain>` – Unban (full MXID required) - `!invite <@user|name>` – Invite a user -- `!whois <@user|name>` – Show user details & power level +- `!userinfo <@user|name>` – Show user details & power level (was `!whois`) - `!op <@user|name> [pl=50]` – Promote user (max 50, moderator) - `!deop <@user|name>` – Demote user to power level 0 - `!topic [new topic]` – Show / set room topic @@ -519,7 +500,7 @@ If the name is ambiguous you'll be asked to choose from a numbered list. # ------------------------------------------------------------------ # Plugin metadata # ------------------------------------------------------------------ -__version__ = "1.1.0" +__version__ = "1.1.1" __author__ = "Funguy Admin" __description__ = "Full room moderation – multi‑word name support" __help__ = """ @@ -527,7 +508,8 @@ __help__ = """ Admin / Moderator Commands