diff --git a/WORKSPACE b/WORKSPACE index cb72e78..d8a43a9 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -14,6 +14,15 @@ http_archive( ], ) +# ToDo: wait for https://github.com/bazelbuild/rules_docker/pull/1638 +http_archive( + name = "io_bazel_rules_docker", + sha256 = "5aa15ff7a83f8de8ff0346bd8274fb82eec52c947106a066dc190c2624ec1cb4", + strip_prefix = "rules_docker-aefbc69e5f758403d50f789eee55b30a3d947418", + urls = [ + "https://github.com/the-superpirate/rules_docker/archive/aefbc69e5f758403d50f789eee55b30a3d947418.tar.gz", + ], +) http_archive( name = "build_bazel_rules_nodejs", diff --git a/nexus/bot/README.md b/nexus/bot/README.md index 66c5c12..25530b8 100644 --- a/nexus/bot/README.md +++ b/nexus/bot/README.md @@ -1,5 +1,9 @@ # Nexus Search: Telegram Bot +`Bot` is a daemon processing user input from Telegram. This version has cut `configs` +subdirectory due to hard reliance of configs on the network infrastructure you are using. +You have to write your own configs taking example below into account. + The bot requires three other essential parts: - IDM API (auth) - Nexus Hub API (managing files) @@ -7,3 +11,108 @@ The bot requires three other essential parts: or their substitutions +## Sample `configs/base.yaml` + +```yaml +--- + +application: + # Amazon Recipient Email in /donate message + amazon_gift_card_recipient: pirate@ship.space + # Amazon URL for buying card in /donate message + amazon_gift_card_url: https://www.amazon.com/dp/B07TMNGSN4 + bot_version: 1.6.0 + # Bitcoin Donation address in /donate message + btc_donate_address: 3QbF3zRQVjn3qMJBSbmLC1gb6VUc555xkw + # List of chat IDs that is allowed to bypass maintenance mode + bypass_maintenance: [] + # Debugging mode + debug: true + # All users (except `bypass_maintenance` ones) will get UPGRADE_MAINTENANCE message in response + is_maintenance_mode: false + # Disable /settings, uploading new articles (can be used while vacuuming backend Postgres) + # and preventing creation of new users + is_read_only_mode: false + # Require subscription to `related_channel` before allowing to use the bot + is_subscription_required: false + # Libera Pay URL in /donate message + libera_pay_url: + maintenance_picture_url: + nexus_version: InterCom + # Default page size for SERP + page_size: 5 + # Length of generated Request-ID used for tracking requests across all backends + request_id_length: 12 + # Enabled schemas (passed to Nexus Meta API) + schemas: + - scimag + - scitech + # Length of generated Session-ID used in commands to clue user sessions + session_id_length: 8 + too_difficult_picture_url: + upgrade_maintenance_picture_url: + # Configuring behaviour of the bot in some cases + views: + settings: + has_discovery_button: true + has_language_buttons: true + has_location_button: false + has_router: false + has_system_messaging_button: true +hub: + url: +idm: + url: +log_path: '/var/log/nexus-bot/{{ ENV_TYPE }}' +meta_api: + url: +telegram: + # Telegram App Hash from https://my.telegram.org/ + app_hash: '{{ APP_HASH }}' + # Telegram App ID from https://my.telegram.org/ + app_id: 00000 + # External bot name shown in messages to users + bot_external_name: libgen_scihub_bot + # Internal bot name used in logging + bot_name: nexus-bot + bot_token: '{{ BOT_TOKEN }}' + # WARNING! Potentially buggy telethon option. Sometimes it goes mad and overload users with tons of messages + # Collect missed messages at startup time and answer to them + catch_up: false + # Telegram account for forwarding copyright infringements from /copyright command + copyright_infringement_account: + # Telethon database for keeping cache + database: + session_id: '/usr/lib/nexus-bot/{{ ENV_TYPE }}/session.db' + # Enabled handlers + handlers: + - nexus.bot.handlers.admin.AdminHandler + - nexus.bot.handlers.ban.BanHandler + - nexus.bot.handlers.ban.BanlistHandler + - nexus.bot.handlers.ban.UnbanHandler + - nexus.bot.handlers.contact.ContactHandler + - nexus.bot.handlers.copyright.CopyrightHandler + - nexus.bot.handlers.close.CloseHandler + - nexus.bot.handlers.donate.DonateHandler + - nexus.bot.handlers.download.DownloadHandler + - nexus.bot.handlers.emoji.EmojiHandler + - nexus.bot.handlers.help.HelpHandler + - nexus.bot.handlers.referencing_to.ReferencingToHandler + - nexus.bot.handlers.referencing_to.ReferencingToPagingHandler + - nexus.bot.handlers.roll.RollHandler + - nexus.bot.handlers.settings.SettingsButtonsHandler + - nexus.bot.handlers.settings.SettingsRouterHandler + - nexus.bot.handlers.settings.SettingsManualHandler + - nexus.bot.handlers.shortlink.ShortlinkHandler + - nexus.bot.handlers.submit.SubmitHandler + - nexus.bot.handlers.start.StartHandler + - nexus.bot.handlers.stop.StopHandler + - nexus.bot.handlers.view.ViewHandler + - nexus.bot.handlers.vote.VoteHandler + - nexus.bot.handlers.noop.NoopHandler + - nexus.bot.handlers.search.SearchHandler + - nexus.bot.handlers.search.SearchEditHandler + - nexus.bot.handlers.search.SearchPagingHandler + # Channel that will be shown in /help, /donate, /contact and in promotions + related_channel: '@nexus_search' +``` \ No newline at end of file diff --git a/nexus/bot/configs/__init__.py b/nexus/bot/configs/__init__.py index 667a0a8..03896a8 100644 --- a/nexus/bot/configs/__init__.py +++ b/nexus/bot/configs/__init__.py @@ -5,11 +5,10 @@ from library.configurator import Configurator def get_config(): return Configurator([ 'nexus/bot/configs/base.yaml', - 'nexus/bot/configs/custom.yaml?', 'nexus/bot/configs/metrics.yaml?', 'nexus/bot/configs/%s.yaml?' % env.type, - 'nexus/bot/configs/logging.yaml?', - 'nexus/bot/configs/promotions.yaml?', + 'nexus/bot/configs/logging.yaml', + 'nexus/bot/configs/promotions.yaml', ]) diff --git a/nexus/bot/configs/base.yaml b/nexus/bot/configs/base.yaml deleted file mode 100644 index 65ab8ef..0000000 --- a/nexus/bot/configs/base.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- - -application: - # Amazon Recipient Email in /donate message - amazon_gift_card_recipient: pirate@ship.space - # Amazon URL for buying card in /donate message - amazon_gift_card_url: https://www.amazon.com/dp/B07TMNGSN4 - bot_version: 1.6.0 - # Bitcoin Donation address in /donate message - btc_donate_address: 3QbF3zRQVjn3qMJBSbmLC1gb6VUc555xkw - # List of chat IDs that is allowed to bypass maintenance mode - bypass_maintenance: [] - # Debugging mode - debug: true - # All users (except `bypass_maintenance` ones) will get UPGRADE_MAINTENANCE message in response - is_maintenance_mode: false - # Disable /settings, uploading new articles (can be used while vacuuming backend Postgres) - # and preventing creation of new users - is_read_only_mode: false - # Require subscription to `related_channel` before allowing to use the bot - is_subscription_required: false - # Libera Pay URL in /donate message - libera_pay_url: - maintenance_picture_url: - nexus_version: InterCom - # Default page size for SERP - page_size: 5 - # Length of generated Request-ID used for tracking requests across all backends - request_id_length: 12 - # Enabled schemas (passed to Nexus Meta API) - schemas: - - scimag - - scitech - # Length of generated Session-ID used in commands to clue user sessions - session_id_length: 8 - too_difficult_picture_url: - upgrade_maintenance_picture_url: - # Configuring behaviour of the bot in some cases - views: - settings: - has_discovery_button: true - has_language_buttons: true - has_location_button: false - has_router: false - has_system_messaging_button: true -hub: - url: -idm: - url: -log_path: '/var/log/nexus-bot/{{ ENV_TYPE }}' -meta_api: - url: -telegram: - # Telegram App Hash from https://my.telegram.org/ - app_hash: '{{ APP_HASH }}' - # Telegram App ID from https://my.telegram.org/ - app_id: 00000 - # External bot name shown in messages to users - bot_external_name: libgen_scihub_bot - # Internal bot name used in logging - bot_name: nexus-bot - bot_token: '{{ BOT_TOKEN }}' - # WARNING! Potentially buggy telethon option. Sometimes it goes mad and overload users with tons of messages - # Collect missed messages at startup time and answer to them - catch_up: false - # Telegram account for forwarding copyright infringements from /copyright command - copyright_infringement_account: - # Telethon database for keeping cache - database: - session_id: '/usr/lib/nexus-bot/{{ ENV_TYPE }}/session.db' - # Enabled handlers - handlers: - - nexus.bot.handlers.admin.AdminHandler - - nexus.bot.handlers.ban.BanHandler - - nexus.bot.handlers.ban.BanlistHandler - - nexus.bot.handlers.ban.UnbanHandler - - nexus.bot.handlers.contact.ContactHandler - - nexus.bot.handlers.copyright.CopyrightHandler - - nexus.bot.handlers.close.CloseHandler - - nexus.bot.handlers.donate.DonateHandler - - nexus.bot.handlers.download.DownloadHandler - - nexus.bot.handlers.emoji.EmojiHandler - - nexus.bot.handlers.help.HelpHandler - - nexus.bot.handlers.referencing_to.ReferencingToHandler - - nexus.bot.handlers.referencing_to.ReferencingToPagingHandler - - nexus.bot.handlers.roll.RollHandler - - nexus.bot.handlers.settings.SettingsButtonsHandler - - nexus.bot.handlers.settings.SettingsRouterHandler - - nexus.bot.handlers.settings.SettingsManualHandler - - nexus.bot.handlers.shortlink.ShortlinkHandler - - nexus.bot.handlers.submit.SubmitHandler - - nexus.bot.handlers.start.StartHandler - - nexus.bot.handlers.stop.StopHandler - - nexus.bot.handlers.view.ViewHandler - - nexus.bot.handlers.vote.VoteHandler - - nexus.bot.handlers.noop.NoopHandler - - nexus.bot.handlers.search.SearchHandler - - nexus.bot.handlers.search.SearchEditHandler - - nexus.bot.handlers.search.SearchPagingHandler - # Channel that will be shown in /help, /donate, /contact and in promotions - related_channel: '@nexus_search' diff --git a/nexus/bot/configs/logging.yaml b/nexus/bot/configs/logging.yaml new file mode 100644 index 0000000..38de28b --- /dev/null +++ b/nexus/bot/configs/logging.yaml @@ -0,0 +1,82 @@ +--- + +logging: + disable_existing_loggers: false + formatters: + base: + class: library.logging.formatters.BaseFormatter + default: + class: library.logging.formatters.DefaultFormatter + traceback: + class: library.logging.formatters.TracebackFormatter + handlers: + debug: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/debug.log' + level: DEBUG + error: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/error.log' + formatter: default + level: ERROR + operation: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/operation.log' + formatter: base + level: DEBUG + statbox: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/statbox.log' + formatter: default + level: DEBUG + traceback: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/traceback.log' + formatter: traceback + level: ERROR + warning: + class: library.logging.handlers.BaseFileHandler + filename: '{{ log_path }}/warning.log' + formatter: default + level: WARNING + loggers: + aiobaseclient: + handlers: + - error + - warning + propagate: false + chardet: + handlers: + - error + propagate: false + debug: + handlers: + - debug + propagate: false + error: + handlers: + - error + - traceback + - warning + propagate: false + metrics: + handlers: + - error + propagate: false + operation: + handlers: + - operation + propagate: false + statbox: + handlers: + - statbox + propagate: false + telethon: + handlers: + - debug + propagate: false + root: + handlers: + - debug + level: DEBUG + version: 1 diff --git a/papers-please/0-welcome-stranger.md b/papers-please/0-welcome-stranger.md new file mode 100644 index 0000000..e69de29 diff --git a/papers-please/1-brief-history.md b/papers-please/1-brief-history.md new file mode 100644 index 0000000..e69de29 diff --git a/papers-please/2-knowledge-must-flow.md b/papers-please/2-knowledge-must-flow.md new file mode 100644 index 0000000..e69de29 diff --git a/papers-please/3-agenda.md b/papers-please/3-agenda.md new file mode 100644 index 0000000..e69de29 diff --git a/papers-please/4-shared-destiny.md b/papers-please/4-shared-destiny.md new file mode 100644 index 0000000..e69de29 diff --git a/papers-please/5-development.md b/papers-please/5-development.md new file mode 100644 index 0000000..e69de29