TgBots/Program.cs

83 lines
2.9 KiB
C#
Raw Normal View History

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;
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;
}
}