- Популярные видео
- Авто
- Видео-блоги
- ДТП, аварии
- Для маленьких
- Еда, напитки
- Животные
- Закон и право
- Знаменитости
- Игры
- Искусство
- Комедии
- Красота, мода
- Кулинария, рецепты
- Люди
- Мото
- Музыка
- Мультфильмы
- Наука, технологии
- Новости
- Образование
- Политика
- Праздники
- Приколы
- Природа
- Происшествия
- Путешествия
- Развлечения
- Ржач
- Семья
- Сериалы
- Спорт
- Стиль жизни
- ТВ передачи
- Танцы
- Технологии
- Товары
- Ужасы
- Фильмы
- Шоу-бизнес
- Юмор
Создаём Telegram-бота с нуля — регистрация, appsettings.json, запуск в VS2022 (C# .NET)
В этом видео мы создаём тестового Telegram-бота с нуля: регистрируем в @BotFather, создаём консольный проект в Visual Studio 2022, добавляем appsettings.json, временно сохраняем ключ бота локально и запускаем polling.
🔥 Это первый урок серии «Создаём Telegram-бота» на канале Code & Bots by Aleksey. В следующих выпусках: вынос секретов из проекта, подключение БД, архитектура и интеграция OpenAI.
Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using Telegram.Bot;
using Telegram.Bot.Exceptions;
using Telegram.Bot.Polling;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
var builder = Host.CreateApplicationBuilder(args);
// Добавляем конфигурацию (appsettings.json уже подключён по умолчанию)
builder.Services.Configure<AppConfig>(builder.Configuration.GetSection("AppConfig"));
// Регистрируем TelegramBotClient как singleton
builder.Services.AddSingleton<ITelegramBotClient>(sp =>
{
var config = sp.GetRequiredService<IOptions<AppConfig>>().Value;
if (string.IsNullOrWhiteSpace(config.BotToken))
throw new InvalidOperationException("BotToken не указан в конфигурации.");
return new TelegramBotClient(config.BotToken);
});
var host = builder.Build();
// Запуск бота
await StartBot(host.Services);
await host.RunAsync();
// -- Вспомогательные методы --
async Task StartBot(IServiceProvider services)
{
var botClient = services.GetRequiredService<ITelegramBotClient>();
var config = services.GetRequiredService<IOptions<AppConfig>>().Value;
if (!config.StartBot)
{
Console.WriteLine("Запуск бота отключён в конфигурации (StartBot = false).");
return;
}
using var cts = new CancellationTokenSource();
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = Array.Empty<UpdateType>() // получать все обновления
};
// ВАЖНО: без именованных параметров!
botClient.StartReceiving(
HandleUpdateAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken: cts.Token
);
var me = await botClient.GetMe(cts.Token);
Console.WriteLine($"Бот запущен: @{me.Username}");
Console.WriteLine("Нажмите Enter для остановки...");
Console.ReadLine();
cts.Cancel();
}
async Task HandleUpdateAsync(ITelegramBotClient bot, Update update, CancellationToken ct)
{
try
{
if (update.Type != UpdateType.Message || update.Message?.Type != MessageType.Text)
return;
var chatId = update.Message.Chat.Id;
var text = update.Message.Text;
Console.WriteLine($"`[DateTime.Now]` Сообщение от {chatId}: {text}");
var reply = $"Принято: {text}\nПривет! Это тестовый бот.";
await bot.SendMessage(chatId: chatId, text: reply, cancellationToken: ct);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка в HandleUpdateAsync: {ex.Message}");
}
}
Task HandleErrorAsync(ITelegramBotClient bot, Exception exception, CancellationToken ct)
{
var errorMessage = exception switch
{
ApiRequestException apiEx => $"Telegram API Ошибка:\n`[apiEx.ErrorCode]` {apiEx.Message}",
_ => $"Общая ошибка: {exception.Message}"
};
Console.WriteLine(errorMessage);
return Task.CompletedTask;
}
// -- Модель конфигурации --
public class AppConfig
{
public string AppName { get; set; } = string.Empty;
public bool StartBot { get; set; }
public string BotUrl { get; set; } = string.Empty;
public string BotToken { get; set; } = string.Empty;
}
Telegram bot, C#, .NET, Telegram.Bot, MAUI, backend, webapi, tutorial, programming, developer, bot, tutorial c#, telegram bot tutorial
#TelegramBot #dotnet #CSharp #CodeAndBots
Видео Создаём Telegram-бота с нуля — регистрация, appsettings.json, запуск в VS2022 (C# .NET) канала Code & Bots by Aleksey
🔥 Это первый урок серии «Создаём Telegram-бота» на канале Code & Bots by Aleksey. В следующих выпусках: вынос секретов из проекта, подключение БД, архитектура и интеграция OpenAI.
Program.cs
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using Telegram.Bot;
using Telegram.Bot.Exceptions;
using Telegram.Bot.Polling;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
var builder = Host.CreateApplicationBuilder(args);
// Добавляем конфигурацию (appsettings.json уже подключён по умолчанию)
builder.Services.Configure<AppConfig>(builder.Configuration.GetSection("AppConfig"));
// Регистрируем TelegramBotClient как singleton
builder.Services.AddSingleton<ITelegramBotClient>(sp =>
{
var config = sp.GetRequiredService<IOptions<AppConfig>>().Value;
if (string.IsNullOrWhiteSpace(config.BotToken))
throw new InvalidOperationException("BotToken не указан в конфигурации.");
return new TelegramBotClient(config.BotToken);
});
var host = builder.Build();
// Запуск бота
await StartBot(host.Services);
await host.RunAsync();
// -- Вспомогательные методы --
async Task StartBot(IServiceProvider services)
{
var botClient = services.GetRequiredService<ITelegramBotClient>();
var config = services.GetRequiredService<IOptions<AppConfig>>().Value;
if (!config.StartBot)
{
Console.WriteLine("Запуск бота отключён в конфигурации (StartBot = false).");
return;
}
using var cts = new CancellationTokenSource();
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = Array.Empty<UpdateType>() // получать все обновления
};
// ВАЖНО: без именованных параметров!
botClient.StartReceiving(
HandleUpdateAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken: cts.Token
);
var me = await botClient.GetMe(cts.Token);
Console.WriteLine($"Бот запущен: @{me.Username}");
Console.WriteLine("Нажмите Enter для остановки...");
Console.ReadLine();
cts.Cancel();
}
async Task HandleUpdateAsync(ITelegramBotClient bot, Update update, CancellationToken ct)
{
try
{
if (update.Type != UpdateType.Message || update.Message?.Type != MessageType.Text)
return;
var chatId = update.Message.Chat.Id;
var text = update.Message.Text;
Console.WriteLine($"`[DateTime.Now]` Сообщение от {chatId}: {text}");
var reply = $"Принято: {text}\nПривет! Это тестовый бот.";
await bot.SendMessage(chatId: chatId, text: reply, cancellationToken: ct);
}
catch (Exception ex)
{
Console.WriteLine($"Ошибка в HandleUpdateAsync: {ex.Message}");
}
}
Task HandleErrorAsync(ITelegramBotClient bot, Exception exception, CancellationToken ct)
{
var errorMessage = exception switch
{
ApiRequestException apiEx => $"Telegram API Ошибка:\n`[apiEx.ErrorCode]` {apiEx.Message}",
_ => $"Общая ошибка: {exception.Message}"
};
Console.WriteLine(errorMessage);
return Task.CompletedTask;
}
// -- Модель конфигурации --
public class AppConfig
{
public string AppName { get; set; } = string.Empty;
public bool StartBot { get; set; }
public string BotUrl { get; set; } = string.Empty;
public string BotToken { get; set; } = string.Empty;
}
Telegram bot, C#, .NET, Telegram.Bot, MAUI, backend, webapi, tutorial, programming, developer, bot, tutorial c#, telegram bot tutorial
#TelegramBot #dotnet #CSharp #CodeAndBots
Видео Создаём Telegram-бота с нуля — регистрация, appsettings.json, запуск в VS2022 (C# .NET) канала Code & Bots by Aleksey
Комментарии отсутствуют
Информация о видео
10 декабря 2025 г. 13:08:56
00:03:49
Другие видео канала












