2024-12-25 04:21:26 +03:00
|
|
|
|
using System;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Telegram.Bot;
|
|
|
|
|
using Telegram.Bot.Types;
|
|
|
|
|
using Telegram.Bot.Types.Enums;
|
|
|
|
|
using Telegram.Bot.Types.ReplyMarkups;
|
|
|
|
|
using Dapper;
|
|
|
|
|
using Npgsql;
|
|
|
|
|
|
|
|
|
|
class Program
|
|
|
|
|
{
|
|
|
|
|
private static string botToken = "7814259349:AAEasTnDpX5s5PrQcR5ihI9pOsmp2Ocv-m0"; // Укажите токен вашего бота
|
2024-12-25 04:30:40 +03:00
|
|
|
|
private static string connectionString = "Host=localhost;Port=5432;Database=telegram_bot;Username=postgres;Password=postgres";
|
2024-12-25 04:21:26 +03:00
|
|
|
|
|
|
|
|
|
private static readonly TelegramBotClient botClient = new TelegramBotClient(botToken);
|
|
|
|
|
|
|
|
|
|
static async Task Main(string[] args)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine("Bot is running...");
|
|
|
|
|
botClient.StartReceiving(UpdateHandler, ErrorHandler);
|
|
|
|
|
|
|
|
|
|
Console.ReadLine();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async Task UpdateHandler(ITelegramBotClient bot, Update update, CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
if (update.Type == UpdateType.Message && update.Message?.Text != null)
|
|
|
|
|
{
|
|
|
|
|
var message = update.Message;
|
2024-12-25 05:10:03 +03:00
|
|
|
|
if (message.Text.StartsWith("/help"))
|
|
|
|
|
{
|
|
|
|
|
await bot.SendMessage(message.Chat.Id, "Уйди. Попробуйте /reg", cancellationToken: cancellationToken);
|
|
|
|
|
}
|
2024-12-25 04:21:26 +03:00
|
|
|
|
if (message.Text.StartsWith("/reg"))
|
|
|
|
|
{
|
|
|
|
|
await RegisterUser(message);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
await bot.SendTextMessageAsync(message.Chat.Id, "Неизвестная команда. Попробуйте /reg", cancellationToken: cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async Task RegisterUser(Message message)
|
|
|
|
|
{
|
|
|
|
|
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, "Вы успешно зарегистрированы!");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
await botClient.SendTextMessageAsync(message.Chat.Id, "Вы уже зарегистрированы.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Error: {ex.Message}");
|
|
|
|
|
await botClient.SendTextMessageAsync(message.Chat.Id, "Произошла ошибка при регистрации. Попробуйте позже.");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static Task ErrorHandler(ITelegramBotClient bot, Exception exception, CancellationToken cancellationToken)
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine($"Error: {exception.Message}");
|
|
|
|
|
return Task.CompletedTask;
|
|
|
|
|
}
|
|
|
|
|
}
|