diff --git a/README.md b/README.md index 202e855..e0f6002 100644 --- a/README.md +++ b/README.md @@ -39,14 +39,14 @@ java -jar ./build/libs/ffmpegbot-1.2-SNAPSHOT-all.jar Note: FFmpeg binary might be installed with limited number of filters and codecs. Some bot features might not work (Audio pitch, robot effect, etc). ```bash -# Edit user ids in `superUsers` and `allowedUsers` fields -vim ffmpegbot-docker.yaml docker build --tag 'ffmpegbot' . docker run -d -t -i \ -e BOT_TOKEN='...' \ -e BOT_USERNAME='...' \ -e APP_ID='...' \ - -e APP_HASH='...'\ + -e APP_HASH='...' \ + -e SUPERUSERS='12345' \ + -e ALLOWED_USERS='12346,12347' \ --name ffmpegbot ffmpegbot:latest ``` @@ -56,4 +56,5 @@ docker run -d -t -i \ - `BOT_USERNAME` — Telegram bot username - `APP_ID` — Telegram API app_id (see https://core.telegram.org/api/obtaining_api_id) - `APP_HASH` — Telegram API app_hash - + - `SUPERUSERS` — Comma-separated list of superusers. Superuser can execute /run command + - `ALLOWED_USERS` — Comma-separated list of allowed user ids diff --git a/ffmpegbot-docker.yaml b/ffmpegbot-docker.yaml index 25e72f8..835e20c 100644 --- a/ffmpegbot-docker.yaml +++ b/ffmpegbot-docker.yaml @@ -5,7 +5,8 @@ appId: env(APP_ID) appHash: env(APP_HASH) # Path to Telegram API file downloader script downloaderScript: pytgfile.py -# Superusers can execute /run command -superUsers: [12345] -# Allowed user ids -allowedUsers: [12346, 12347] +# Comma-separated list of superusers +# Superuser can execute /run command +superUsers: env(SUPERUSERS) +# Comma-separated list of allowed user ids +allowedUsers: env(ALLOWED_USERS) diff --git a/ffmpegbot.yaml.template b/ffmpegbot.yaml.template index 52b37dc..1de99e0 100644 --- a/ffmpegbot.yaml.template +++ b/ffmpegbot.yaml.template @@ -6,7 +6,8 @@ appId: 12345 appHash: abc123def456 # Path to Telegram API file downloader script downloaderScript: pytgfile.py -# Superusers can execute /run command -superUsers: [12345] -# Allowed user ids -allowedUsers: [12346, 12347] +# Comma-separated list of superusers +# Superuser can execute /run command +superUsers: 12345 +# Comma-separated list of allowed user ids +allowedUsers: 12346, 12347 diff --git a/src/main/java/com/annimon/ffmpegbot/BotConfig.java b/src/main/java/com/annimon/ffmpegbot/BotConfig.java index d13e859..97b3303 100644 --- a/src/main/java/com/annimon/ffmpegbot/BotConfig.java +++ b/src/main/java/com/annimon/ffmpegbot/BotConfig.java @@ -1,9 +1,31 @@ package com.annimon.ffmpegbot; +import java.util.Arrays; +import java.util.Collections; import java.util.Set; +import java.util.stream.Collectors; public record BotConfig(String appId, String appHash, String botToken, String botUsername, String downloaderScript, - Set superUsers, Set allowedUsers) { + String superUsers, String allowedUsers) { + + Set superUserIds() { + return toLongs(superUsers); + } + + Set allowedUserIds() { + return toLongs(allowedUsers); + } + + private static Set toLongs(String input) { + if (input == null || input.isEmpty()) { + return Collections.emptySet(); + } + return Arrays.stream(input.split(",")) + .map(String::trim) + .filter(str -> str.matches("^\\d{1,15}$")) + .map(Long::parseLong) + .collect(Collectors.toSet()); + } } diff --git a/src/main/java/com/annimon/ffmpegbot/MainBotHandler.java b/src/main/java/com/annimon/ffmpegbot/MainBotHandler.java index c9b7831..e80fff5 100644 --- a/src/main/java/com/annimon/ffmpegbot/MainBotHandler.java +++ b/src/main/java/com/annimon/ffmpegbot/MainBotHandler.java @@ -26,7 +26,7 @@ public class MainBotHandler extends BotHandler { public MainBotHandler(BotConfig botConfig) { super(BotModuleOptions.createDefault(botConfig.botToken())); - permissions = new Permissions(botConfig.superUsers(), botConfig.allowedUsers()); + permissions = new Permissions(botConfig.superUserIds(), botConfig.allowedUserIds()); commands = new CommandRegistry<>(botConfig.botUsername(), permissions); final var sessions = new Sessions(); final var fallbackFileDownloader = new FallbackFileDownloader(