diff --git a/SimpleTGBot/Config.cs b/SimpleTGBot/Config.cs new file mode 100644 index 0000000..64f6758 --- /dev/null +++ b/SimpleTGBot/Config.cs @@ -0,0 +1,19 @@ +using System.IO; + +namespace SimpleTGBot; + +internal class Config +{ + public const string DEFAULT_BOT_TOKEN_FILENAME = "telegram_token.txt"; + + public static string? TryReadBotTokenFile() + { + try + { + return File.ReadAllText(DEFAULT_BOT_TOKEN_FILENAME).Trim(); + } catch (FileNotFoundException) + { + return null; + } + } +} diff --git a/SimpleTGBot/Program.cs b/SimpleTGBot/Program.cs index 407ebdd..730c2ce 100644 --- a/SimpleTGBot/Program.cs +++ b/SimpleTGBot/Program.cs @@ -10,7 +10,21 @@ public static class Program // Православная кодировка Console.OutputEncoding = Encoding.UTF8; - TelegramBot telegramBot = new TelegramBot(); + string? botToken = Config.TryReadBotTokenFile(); + + if (botToken == null) + { + Console.WriteLine($"Файл {Config.DEFAULT_BOT_TOKEN_FILENAME} не найден. Вы можете указать токен вручную:"); + Console.Write("$ "); + botToken = Console.ReadLine(); + } + + if (botToken == null) + { + return 1; + } + + TelegramBot telegramBot = new TelegramBot(botToken); await telegramBot.Run(); } } diff --git a/SimpleTGBot/TelegramBot.cs b/SimpleTGBot/TelegramBot.cs index 68eca38..815dc49 100644 --- a/SimpleTGBot/TelegramBot.cs +++ b/SimpleTGBot/TelegramBot.cs @@ -8,14 +8,19 @@ namespace SimpleTGBot; public class TelegramBot { - private const string BotToken = "ВАШ_ТОКЕН_ИДЕНТИФИКАЦИИ_БОТА"; + private string token; + + public TelegramBot(string token) + { + this.token = token; + } /// /// Инициализирует и обеспечивает работу бота до нажатия клавиши Esc /// public async Task Run() { - var botClient = new TelegramBotClient(BotToken); + var botClient = new TelegramBotClient(token); using CancellationTokenSource cts = new CancellationTokenSource(); ReceiverOptions receiverOptions = new ReceiverOptions() @@ -29,11 +34,20 @@ public class TelegramBot cancellationToken: cts.Token ); - var me = await botClient.GetMeAsync(cancellationToken: cts.Token); - Console.WriteLine($"Бот @{me.Username} запущен.\nДля остановки нажмите клавишу Esc..."); + try + { + var me = await botClient.GetMeAsync(cancellationToken: cts.Token); + Console.WriteLine($"Бот @{me.Username} запущен.\nДля остановки нажмите клавишу Esc..."); + } + catch (ApiRequestException) + { + Console.WriteLine("Указан неправильный токен"); + goto botQuit; + } while (Console.ReadKey().Key != ConsoleKey.Escape){} +botQuit: cts.Cancel(); }