- 20.06.2022
- 23 845
- 218
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
В сегодняшнем гайде я покажу как создать своего Discord-бота, используя C# и библиотеку Discord.net.
Что понадобиться:
1. Установленная Visual Studio с набором для разработки классических .NET приложений
2. Доступ к интернету
3. Компьютер
4. Клавиатура
5, Компьютерная мышь
6. Монитор
7. [Желательно] Небольшой опыт работы с Visual Studio 2022/2019/2017 и C#
Создание бота:
Прежде всего нам нужен сам бот, к которому мы будем подключаться
1. Переходим на
2. Даём имя будущему боту и создаём приложение
3. В новом окне довольно много всего, в чём вы можете самостоятельно разобраться. Нас же интересует "OAuth2" и "Bot"
4. Переходим в "Bot" и по нажатию кнопку в правой части экрана создаём самого бота
5. В новом окне включаем эти две галочки
а также в "Bot Permissions" снизу выбираем "Administrator"
6. Теперь переходим в "OAuth2", ставим галочки "Bot" и "Administrator" и копируем ссылку для приглашения бота
7. Переходим по этой ссылке и добавляем бота на сервер. Поздравляю! На данный момент у нас есть бот, который всегда в оффлайне и ничего не делает. Давайте его оживим
Создание проекта:
Создаём консольное приложение .NET Core (кроссплатформенное, не .NET Framework). Думаю тут справится каждый, но если надо могу сделать гайд по установке Visual Studio и созданию проекта в ней.
Установка необходимых компонентов:
Отлично! Теперь нам нужно установить необходимые пакеты для работы с библиотекой Discord.net. Клацаем правой кнопкой мыши по нашему проекту и ищем NuGet
В открывшемся окне устанавливаем Discord.Addons.Hosting. Discord.Net, Discord.Net.Core, Discord.Net.WebSocket, Discord.Net.Commands и Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Logging, Microsoft.Extensions.Hosting, Microsoft.Extensions.Configuration
Запускаем бота:
Сам код:
(НАВЕДИТЕСЬ НА ОШИБКУ ЕСЛИ ОНА ВОЗНИКАЕТ - СКОРЕЕ ВСЕГО ВЫ ПРОСТО НЕ ПОДКЛЮЧИЛИ В USING'АХ БИБЛИОТЕКИ, КОТОРЫЕ МЫ УСТАНАВЛИВАЛИ В НАЧАЛЕ ГАЙДА)
Но не спешите это запускать. Теперь нам нужно добавить файл конфигурации config.json, а также обработчик команд и сами команды.
Кликаем правой кнопкой мыши по проекту и создаём json файл и пишем в нем это:
Чтобы получить токен переходим
во вкладку "Bot" и нажимаем Copy. Вставляем его вместо "ВАШ ТОКЕН"
ВАЖНО! Клацаем по config.json (или как вы его там назвали) и переходим, в моем случае. в Properties. В открывшемся окне ставим вместо Do not copy -> Copy if newer
Теперь с помощью CTRL+F5 можно запустить нашего бота и он будет онлайн в дискорде до тех пор, пока вы не закроете приложение
Создание команд и обработчика:
В CommandHandler.cs:
Наш бот теперь может обрабатывать команды, почти готово! Осталось лишь добавить файл с командами. Опять же для удобства создадим папку Modules и добавим в нее файл класса General.cs
Кстати, раскоментируем-ка кое-что в Program.cs:
В General.cs:
Класс и всё необходимое создано, как же добавить команды?
Создадим команду, которая повторяет сообщение пользователя:
Или что-нибудь поинтереснее, например, вывод информации о пользователе:
Завершение:
На этом пока что всё.
Что понадобиться:
1. Установленная Visual Studio с набором для разработки классических .NET приложений
2. Доступ к интернету
3. Компьютер
4. Клавиатура
5, Компьютерная мышь
6. Монитор
7. [Желательно] Небольшой опыт работы с Visual Studio 2022/2019/2017 и C#
Создание бота:
Прежде всего нам нужен сам бот, к которому мы будем подключаться
1. Переходим на
2. Даём имя будущему боту и создаём приложение
3. В новом окне довольно много всего, в чём вы можете самостоятельно разобраться. Нас же интересует "OAuth2" и "Bot"
4. Переходим в "Bot" и по нажатию кнопку в правой части экрана создаём самого бота
5. В новом окне включаем эти две галочки
а также в "Bot Permissions" снизу выбираем "Administrator"
6. Теперь переходим в "OAuth2", ставим галочки "Bot" и "Administrator" и копируем ссылку для приглашения бота
7. Переходим по этой ссылке и добавляем бота на сервер. Поздравляю! На данный момент у нас есть бот, который всегда в оффлайне и ничего не делает. Давайте его оживим
Создание проекта:
Создаём консольное приложение .NET Core (кроссплатформенное, не .NET Framework). Думаю тут справится каждый, но если надо могу сделать гайд по установке Visual Studio и созданию проекта в ней.
Установка необходимых компонентов:
Отлично! Теперь нам нужно установить необходимые пакеты для работы с библиотекой Discord.net. Клацаем правой кнопкой мыши по нашему проекту и ищем NuGet
В открывшемся окне устанавливаем Discord.Addons.Hosting. Discord.Net, Discord.Net.Core, Discord.Net.WebSocket, Discord.Net.Commands и Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Logging, Microsoft.Extensions.Hosting, Microsoft.Extensions.Configuration
Запускаем бота:
Сам код:
C#:
static async Task Main()
{
var builder = new HostBuilder()
.ConfigureAppConfiguration(x =>
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("config.json", false, true)
.Build();
x.AddConfiguration(config);
})
.ConfigureLogging(x =>
{
x.AddConsole();
x.SetMinimumLevel(LogLevel.Debug); // вместо Debug можно поставить другие уровни, но в нашем случае это самый оптимальный вариант
})
.ConfigureDiscordHost((context, config) =>
{
config.SocketConfig = new DiscordSocketConfig
{
LogLevel = LogSeverity.Debug,
AlwaysDownloadUsers = false,
MessageCacheSize = 200
};
config.Token = context.Configuration["token"];
})
.UseCommandService((context, config) =>
{
config.CaseSensitiveCommands = false;
config.LogLevel = LogSeverity.Debug;
config.DefaultRunMode = RunMode.Async;
})
.ConfigureServices((context, services) =>
{
// чуть позже мы это раскоментируем
//services
// .AddHostedService<CommandHandler>();
})
// думаю тут понятно
.UseConsoleLifetime();
var host = builder.Build();
using (host)
{
// запускаем бота
await host.RunAsync();
}
}
Но не спешите это запускать. Теперь нам нужно добавить файл конфигурации config.json, а также обработчик команд и сами команды.
Кликаем правой кнопкой мыши по проекту и создаём json файл и пишем в нем это:
JavaScript:
{
"token": "ВАШ ТОКЕН",
"prefix": "!"
}
Чтобы получить токен переходим
во вкладку "Bot" и нажимаем Copy. Вставляем его вместо "ВАШ ТОКЕН"
ВАЖНО! Клацаем по config.json (или как вы его там назвали) и переходим, в моем случае. в Properties. В открывшемся окне ставим вместо Do not copy -> Copy if newer
Теперь с помощью CTRL+F5 можно запустить нашего бота и он будет онлайн в дискорде до тех пор, пока вы не закроете приложение
Создание команд и обработчика:
В CommandHandler.cs:
Скрытое содержимое доступно для зарегистрированных пользователей!
Наш бот теперь может обрабатывать команды, почти готово! Осталось лишь добавить файл с командами. Опять же для удобства создадим папку Modules и добавим в нее файл класса General.cs
Кстати, раскоментируем-ка кое-что в Program.cs:
Скрытое содержимое доступно для зарегистрированных пользователей!
В General.cs:
C#:
public class General : ModuleBase<SocketCommandContext>
{
}
Класс и всё необходимое создано, как же добавить команды?
Создадим команду, которая повторяет сообщение пользователя:
C#:
public class General : ModuleBase<SocketCommandContext>
{
[Command("echo")]
private async Task Echo(string msg)
{
await Context.Channel.SendMessageAsync(msg);
}
}
Или что-нибудь поинтереснее, например, вывод информации о пользователе:
C#:
[Command("info")]
private async Task Info(SocketGuildUser socketGuildUser = null)
{
if (socketGuildUser == null)
{
var embed = new EmbedBuilder()
.WithColor(Color.Orange)
.WithTitle(Context.User.Username)
.WithImageUrl(Context.User.GetAvatarUrl())
.AddField("User ID:", Context.User.Id, true)
.AddField("Created at", Context.User.CreatedAt, true);
await Context.Channel.SendMessageAsync(embed: embed.Build());
}
else
{
var embed = new EmbedBuilder()
.WithColor(Color.Orange)
.WithTitle(socketGuildUser.Username)
.WithImageUrl(socketGuildUser.GetAvatarUrl())
.AddField("User ID:", socketGuildUser.Id, true)
.AddField("Created at:", socketGuildUser.CreatedAt, true);
await Context.Channel.SendMessageAsync(embed: embed.Build());
}
}
Завершение:
На этом пока что всё.
Последние темы в этом разделе:
- C# 8.0 Стартовый (2021) [Александр Шевчук]
- [Stepik] Указатели и память С++ (2024)
- Алфавит и основные понятия языка C++
- [Яндекс.Практикум] Разработчик C++ [Все Части] (2023)
- [Валентин Кравченко, Роман Сакутин] C# c 0 до профи (2022)
- [Udemy] Структуры данных и алгоритмы на C++ + упражнения LEETCODE (2024)
- [iamtimcorey] Мастер-курс по C# (2023)
- [udemy] Изучайте программирование на C++, создавая игры Learn C++ Programming by Making Games, Volume 1 (2023)
- C# (C Sharp) на примерах из GTA 5 (слив курса с itvdn) [Роман Самчук]
- Курс "С++ Стартовый" от ITVDN