Compare commits

..

2 commits

Author SHA1 Message Date
a41417ee84
feat: App.HostName is now optional
Signed-off-by: mctaylors <cantsendmails@mctaylors.ru>
2025-03-26 14:04:06 +03:00
496ea38b5c
change: update config.ini
use definitions from danbooru dotenv, add comments

Signed-off-by: mctaylors <cantsendmails@mctaylors.ru>
2025-03-26 14:03:09 +03:00
4 changed files with 21 additions and 11 deletions

View file

@ -42,7 +42,7 @@ async def about_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> N
f"{context.bot.first_name} is an inline image grabber written in python that grabs images from Danbooru " f"{context.bot.first_name} is an inline image grabber written in python that grabs images from Danbooru "
f"(or other similar services).\n\n" f"(or other similar services).\n\n"
f"{html_parser.bold("currently configured instance:")}\n" f"{html_parser.bold("currently configured instance:")}\n"
f"{html_parser.italic(config.get('Service', 'Name'))} ({config.get('Service', 'Domain')})", f"{html_parser.italic(config.get('App', 'Name'))} ({config.get('App', 'Host')})",
parse_mode=ParseMode.HTML, parse_mode=ParseMode.HTML,
reply_markup=reply_markup reply_markup=reply_markup
) )

View file

@ -1,8 +1,17 @@
[General] [General]
; HTTP API token of Telegram bot.
; Can also be set with the BOT_TOKEN environment variable.
Token = Token =
; (Optional) URL for "source code" button in /about.
; If not set, button will not appear in "about" menu.
SourceUrl = SourceUrl =
[Service] [App]
; Application name (e.g. Danbooru).
Name = Danbooru Name = Danbooru
Domain = danbooru.donmai.us ; Host (without http://) used to access the application API.
PublicDomain = danbooru.donmai.us Host = danbooru.donmai.us
; (Optional) Public host name (without http://) for the “Open in [App.Name]” button.
; Useful if the bot is hosted on the same server as the application.
; If not set, [App.Host] will be used instead.
HostName =

View file

@ -21,7 +21,7 @@ async def inline_query(update: Update, context: ContextTypes.DEFAULT_TYPE) -> No
return return
from main import config from main import config
response = requests.get(f"http://{config.get('Service', 'Domain')}/posts/{query}.json") response = requests.get(f"http://{config.get('App', 'Host')}/posts/{query}.json")
if response.status_code != 200: if response.status_code != 200:
await invalid_query(update, query) await invalid_query(update, query)
@ -38,10 +38,12 @@ async def answer_query(update: Update, query: str,
copyrights = humanize_tags_from_json(data['tag_string_copyright'], "unknown copyright") copyrights = humanize_tags_from_json(data['tag_string_copyright'], "unknown copyright")
artists = humanize_tags_from_json(data['tag_string_artist'], "unknown artist") artists = humanize_tags_from_json(data['tag_string_artist'], "unknown artist")
rating = format_rating(data['rating']) rating = format_rating(data['rating'])
hostname = config.get('App', 'HostName')
hostname = hostname if hostname != "" else config.get('App', 'Host')
keyboard = [ keyboard = [
[ [
InlineKeyboardButton(f"Open in {config.get('Service', 'Name')}", InlineKeyboardButton(f"Open in {config.get('App', 'Name')}",
url=f"https://{config.get('Service', 'PublicDomain')}/posts/{query}"), url=f"https://{hostname}/posts/{query}"),
InlineKeyboardButton("View original", url=data['file_url']) InlineKeyboardButton("View original", url=data['file_url'])
] ]
] ]

View file

@ -34,14 +34,13 @@ def main() -> None:
def validate_config() -> None: def validate_config() -> None:
# TODO: do some PublicDomain checks or something
# noinspection PyBroadException # noinspection PyBroadException
try: try:
response = requests.get(f"http://{config.get('Service', 'Domain')}/status.json") response = requests.get(f"http://{config.get('App', 'Host')}/status.json")
if response.status_code != 200: if response.status_code != 200:
raise raise
except: except:
print("Unable validate Domain in config.ini.") print("Unable validate App.Host in config.ini.")
exit(1) exit(1)
@ -52,7 +51,7 @@ def get_token():
if config.get('General', 'Token') != "": if config.get('General', 'Token') != "":
return config.get('General', 'Token') return config.get('General', 'Token')
print("Set BOT_TOKEN environment variable or use config.ini to set bot token.") print("Set BOT_TOKEN environment variable or use General.Token in config.ini to set bot token.")
exit(1) exit(1)