From 068829702efa277da64be301ddcb4592724656a2 Mon Sep 17 00:00:00 2001 From: ctih1 Date: Sat, 26 Jul 2025 00:10:31 +0300 Subject: [PATCH] added ability to customize actibity further, and changed settings to example --- .gitignore | 3 +- bot.py | 24 +++++++++++++--- modules/settings.py | 28 ++++++++++++++++++- .../{settings.json => settings.example.json} | 22 +++++++++------ 4 files changed, 62 insertions(+), 15 deletions(-) rename settings/{settings.json => settings.example.json} (60%) diff --git a/.gitignore b/.gitignore index 49721d9..5e2be66 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ translation_report.txt translationcompleteness.py modules/volta log.txt -settings/admin_logs.json \ No newline at end of file +settings/admin_logs.json +settings/settings.json \ No newline at end of file diff --git a/bot.py b/bot.py index 3826add..8092b1d 100644 --- a/bot.py +++ b/bot.py @@ -31,7 +31,7 @@ from modules import key_compiler import logging from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler -from modules.settings import instance as settings_manager +from modules.settings import instance as settings_manager, ActivityType from modules.permission import requires_admin import threading @@ -183,12 +183,28 @@ async def on_ready() -> None: traceback.print_exc() quit() - if not settings["bot"]["misc"]["active_song"]: + if not settings["bot"]["misc"]["activity"]["content"]: return + + activity_type = discord.ActivityType.unknown + + settings_activity = settings["bot"]["misc"]["activity"]["type"] + + activities: Dict[ActivityType, discord.ActivityType] = { + "listening": discord.ActivityType.listening, + "playing": discord.ActivityType.playing, + "streaming": discord.ActivityType.streaming, + "competing": discord.ActivityType.competing, + "watching": discord.ActivityType.watching, + } + await bot.change_presence( activity=discord.Activity( - type=discord.ActivityType.listening, - name=settings["bot"]["misc"]["active_song"], + type=activities.get( + settings["bot"]["misc"]["activity"]["type"], + discord.ActivityType.unknown, + ), + name=settings["bot"]["misc"]["activity"]["content"], ) ) launched = True diff --git a/modules/settings.py b/modules/settings.py index fa7b0b5..dfffd78 100644 --- a/modules/settings.py +++ b/modules/settings.py @@ -7,10 +7,17 @@ import copy logger = logging.getLogger("goober") +ActivityType = Literal["listening", "playing", "streaming", "competing", "watching"] + + +class Activity(TypedDict): + content: str + type: ActivityType + class MiscBotOptions(TypedDict): ping_line: str - active_song: str + activity: Activity positive_gifs: List[str] block_profanity: bool @@ -66,6 +73,25 @@ class Settings: self.log_path: str = os.path.join(".", "settings", "admin_logs.json") + self.migrate() + + def migrate(self): + active_song: str | None = ( + self.settings.get("bot", {}).get("misc", {}).get("active_song") + ) + + if active_song: + logger.warning("Found deprecated active_song, migrating") + + self.settings["bot"]["misc"]["activity"] = { + "content": active_song, + "type": "listening", + } + + del self.settings["bot"]["misc"]["active_song"] # type: ignore + + self.commit() + def reload_settings(self) -> None: with open(self.path, "r") as f: self.__kv_store: dict = json.load(f) diff --git a/settings/settings.json b/settings/settings.example.json similarity index 60% rename from settings/settings.json rename to settings/settings.example.json index 2c5f2a1..3f7b6af 100644 --- a/settings/settings.json +++ b/settings/settings.example.json @@ -1,29 +1,33 @@ { "bot": { - "prefix": "รค.", + "prefix": "p.", "owner_ids": [ - 642441889181728810, + 642441889181728810 + ], + "blacklisted_users": [ 1391805740716527666 ], - "blacklisted_users": [], "user_training": true, "allow_show_mem_command": true, "react_to_messages": true, "misc": { "ping_line": "The Beretta fires fast and won't make you feel any better!", - "active_song": "Basket Case - Green Day", - "positive_gifs": [], - "block_profanity": false + "positive_gifs": [ + "https://tenor.com/view/i-want-a-divorce-dissolution-annulment-seperation-break-up-gif-25753155" + ], + "block_profanity": false, + "activity": { + "content": "Rakas - Haloo Helsinki", + "type": "listening" + } }, "active_memory": "memory.json", "enabled_cogs": [ - "fuckup", - "songchanger", "pulse", "breaking_news" ] }, - "locale": "fi", + "locale": "en", "name": "gubert", "auto_update": true, "disable_checks": false,