using System; using System.Data; using System.Threading; using System.Threading.Tasks; using Telegram.Bot; using Telegram.Bot.Types; using Telegram.Bot.Types.Enums; using Dapper; using Npgsql; class Program { private static string botToken = "7814259349:AAEasTnDpX5s5PrQcR5ihI9pOsmp2Ocv-m0"; // Укажите токен вашего бота private static string connectionString = "Host=localhost;Port=5432;Database=telegram_bot;Username=postgres;Password=postgres"; private static readonly TelegramBotClient botClient = new TelegramBotClient(botToken); static async Task Main(string[] args) { Console.WriteLine("Bot is running..."); // Управление токеном завершения var cts = new CancellationTokenSource(); Console.CancelKeyPress += (_, _) => cts.Cancel(); botClient.StartReceiving(UpdateHandler, ErrorHandler, cancellationToken: cts.Token); Console.WriteLine("Press Ctrl+C to exit..."); await Task.Delay(Timeout.Infinite, cts.Token); } private static async Task UpdateHandler(ITelegramBotClient bot, Update update, CancellationToken cancellationToken) { Console.WriteLine("Received an update"); if (update.Type == UpdateType.Message && update.Message?.Text != null) { var message = update.Message; if (message.Text.StartsWith("/help")) { await bot.SendTextMessageAsync(message.Chat.Id, "Уйди. Попробуйте /reg", cancellationToken: cancellationToken); } else if (message.Text.StartsWith("/reg")) { await RegisterUser(message, cancellationToken); } else { await bot.SendTextMessageAsync(message.Chat.Id, "Неизвестная команда. Попробуйте /reg", cancellationToken: cancellationToken); } } } private static async Task RegisterUser(Message message, CancellationToken cancellationToken) { try { using (IDbConnection db = new NpgsqlConnection(connectionString)) { string query = "INSERT INTO users (chat_id, user_id, user_name) VALUES (@ChatId, @UserId, @UserName) ON CONFLICT (user_id) DO NOTHING"; var parameters = new { ChatId = message.Chat.Id, UserId = message.From.Id, UserName = message.From.FirstName }; int rowsAffected = await db.ExecuteAsync(query, parameters); if (rowsAffected > 0) { await botClient.SendTextMessageAsync(message.Chat.Id, "Вы успешно зарегистрированы!", cancellationToken: cancellationToken); } else { await botClient.SendTextMessageAsync(message.Chat.Id, "Вы уже зарегистрированы.", cancellationToken: cancellationToken); } } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); await botClient.SendTextMessageAsync(message.Chat.Id, "Произошла ошибка при регистрации. Попробуйте позже.", cancellationToken: cancellationToken); } } private static Task ErrorHandler(ITelegramBotClient bot, Exception exception, CancellationToken cancellationToken) { Console.WriteLine($"Error: {exception.Message}"); return Task.CompletedTask; } }