From 1178c808318b16a481d09750076a019a1e26ae8d Mon Sep 17 00:00:00 2001 From: mctaylors Date: Sun, 2 Mar 2025 14:09:49 +0300 Subject: [PATCH] feat: add token in config.ini Signed-off-by: mctaylors --- commands.py | 2 +- config.ini | 9 +++++---- inline_query.py | 6 +++--- main.py | 19 +++++++++++++++---- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/commands.py b/commands.py index 872c8df..35fb047 100644 --- a/commands.py +++ b/commands.py @@ -26,7 +26,7 @@ async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> No async def about_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: from main import config reply_markup = None - source_url = config.get('Source', 'Url') + source_url = config.get('General', 'SourceUrl') if source_url.startswith('http://') or source_url.startswith('https://'): keyboard = [ [ diff --git a/config.ini b/config.ini index ae34941..2004516 100644 --- a/config.ini +++ b/config.ini @@ -1,6 +1,7 @@ [General] -Name = Danbooru -Domain = danbooru.donmai.us +Token = +SourceUrl = -[Source] -Url = \ No newline at end of file +[Service] +Name = Danbooru +Domain = danbooru.donmai.us \ No newline at end of file diff --git a/inline_query.py b/inline_query.py index 4e376f6..e7194aa 100644 --- a/inline_query.py +++ b/inline_query.py @@ -20,7 +20,7 @@ async def inline_query(update: Update, context: ContextTypes.DEFAULT_TYPE) -> No return from main import config - response = requests.get(f"https://{config.get('General', 'Domain')}/posts/{query}.json") + response = requests.get(f"https://{config.get('Service', 'Domain')}/posts/{query}.json") if response.status_code != 200: await invalid_query(update, query) @@ -37,8 +37,8 @@ async def answer_query(update, query, config, data): artists = humanize_tags_from_json(data['tag_string_artist'], "unknown artist") keyboard = [ [ - InlineKeyboardButton(f"Open in {config.get('General', 'Name')}", - url=f"https://{config.get('General', 'Domain')}/posts/{query}"), + InlineKeyboardButton(f"Open in {config.get('Service', 'Name')}", + url=f"https://{config.get('Service', 'Domain')}/posts/{query}"), InlineKeyboardButton("View original", url=data['file_url']) ] ] diff --git a/main.py b/main.py index fe4e817..646ece5 100644 --- a/main.py +++ b/main.py @@ -17,12 +17,12 @@ logging.getLogger("httpx").setLevel(logging.WARNING) logger = logging.getLogger(__name__) config = configparser.ConfigParser() -config.read('config.ini') +config.read("config.ini") def main() -> None: validate_config() - application = Application.builder().token(os.getenv("BOT_TOKEN")).build() + application = Application.builder().token(get_token()).build() application.add_handler(CommandHandler("start", start_command)) application.add_handler(CommandHandler("help", help_command)) @@ -36,13 +36,24 @@ def main() -> None: def validate_config(): # noinspection PyBroadException try: - response = requests.get(f"https://{config.get('General', 'Domain')}/profile.json") + response = requests.get(f"https://{config.get('Service', 'Domain')}/profile.json") if response.status_code != 200: raise except: - print('Unable validate Domain in config.ini.') + print("Unable validate Domain in config.ini.") exit(1) +def get_token(): + if os.getenv("BOT_TOKEN") is not None: + return os.getenv("BOT_TOKEN") + + if config.get('General', 'Token') != "": + return config.get('General', 'Token') + + print("Set BOT_TOKEN environment variable or use config.ini to set bot token.") + exit(1) + + if __name__ == "__main__": main()