Как написать бота для дискорда на c
Перейти к содержимому

Как написать бота для дискорда на c

  • автор:

Статья Учимся создавать Discord-боты. Часть 1.

Discord

Боты — это интересные существа который выполняют свои определенные задачи. Они бывают в разных программах и соц.сетей. Но в статье я покажу именно саму Discord. Почему выбрал Discord? Знаете если сравнить с Telegram то думаю что Discord намного больше возможности(мое мнение) и опять же по ботам. Ладно не будем сравнивать этих легенд, перейдем дальше.

Писать ботов будем с Python, он как по мне легче и лучше. А теперь выбор библиотек. Есть разные библиотеки, большинство программистов выбирают discord.py, но это устаревший вариант и лучше всего использовать более продвинутые библиотеки: pycord и nextcord(мое мнение). На примере буду показывать Pycord.

Мы не будем тянуть времени, и начнем писать ботов. Но если у вас возникнут вопросы, я отвечу с радостью.

Глава вторая «Установка и создание бота»

С начало нам нужно создать бота. Тут в этом деле не нужно знание языка, это может любой сделать. Итак, перейдите на сайт Discord Portal Application. Это страница ваших будущих ботов и вы можете ими управлять.

1671204638692.png

1. для создание бота, нажмите на кнопку «New Application» укажите название будущего бота и нажмите «Create» после чего у вас создаться бот.

2. (необязательный пункт) когда вы на вкладке «General Information» вы можете оформить своего бота.(аватар, био и т.д)

Снимок экрана от 2022-12-16 18-35-00.png

3. для добавление бота(чтобы он у вас работало) необходимо перейти во вкладку «Bot» и нажать на кнопку «Add Bot»

4. осталось совсем чуть-чуть. Теперь необходимо установить права бота, чтобы он работало корректно. Вставляйте следующие опции.

1671205482869.png

5. на это странице сразу можно получить токен, для этого нажмите на кнопку «Reset Token» и сохраните его. Токен нужен для подключение бота.

⛔

Внимание
Показывать свой токен бота это опасно! Если мошенник сможет его заполучить, значит он украл ваш бот! Будьте бдительны, это реально важно.

6. осталось пригласить бота, а точнее получить ссылку приглашение бота. Ею смогут воспользоваться любой. Для этого перейдите в «OAth2» а затем в «URL Generator» Права для бота я выбрал Администратор, это значит что бот получает все возможности к управление сервера.

1671205881111.png

7. после указании этих опций, внизу у вас будет уже готовая сгенерированная ссылка, для приглашение бота на свой сервер.

Бинго! Наш бот создан и приглашен на сервер. Однако он не в сети, но это не беда.(кстати круто я придумал название бота )

1671206033628.png

8. а теперь остались библиотека Pycord. Его необходимо установить. Откройте ниже спойлер.

Install modules
Версия Python рекомендуется выше 3.6x.
Если у вас нету Python —
Ссылка скрыта от гостей

Для установки Pycord вы должны удалить discord.py, чтобы не было конфликтов.

pip install discord pip install py-cord

Глава третья «Пишем код»

Дождались. Теперь когда у нас все готово, создайте Python файл. Мы напишем бот который будет отвечать с помощью команды и так же сделаем ивент.

import discord bot = discord.Bot() @bot.event async def on_ready(): print(f" connected!") # если наш бот запустился успешно # Слеш команда. @bot.slash_command( name='hello', # название команды description='Приветствие. ' # описание команды ) async def hello(ctx): await ctx.respond("Ну привет. Я Сергей Сталь. Я великий и ужасный!") bot.run('')

После создании, наша программа выводит вот это:

Снимок экрана от 2022-12-16 19-10-51.png

Ну а если запустить нашу команду, получится такой результат:

Снимок экрана от 2022-12-16 19-11-29.png

Отлично! Объясню по коду. Мы используется on_ready() чтобы узнать коннектился наш бот или нет(в нашем случае). И сделали слеш команду hello, который отвечает нам с помощью respond. А бот мы запускаем с помощью bot.run.

Заключение

Вы узнали как создавать ботов, и написать код. Не переживайте что статья скучная, в дальнейшем все станет намного интересно. Я делаю это лишь чтобы лишне не нагружать. Всем спасибо за внимание!

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

UniOn
Активный

Пользователь
Регистрация 22 Май 2022 Сообщения 11

Приветствую вас. В сегодняшнем гайде я покажу как создать своего Discord-бота, используя C# и библиотеку Discord.net.

Спойлер: Что нам понадобится

1. Установленная Visual Studio с набором для разработки классических .NET приложений
2. Доступ к интернету
3. Компьютер
4. Клавиатура
5, Компьютерная мышь
6. Монитор
7. [Желательно] Небольшой опыт работы с Visual Studio 2022/2019/2017 и C#

Спойлер: Создание самого бота

Прежде всего нам нужен сам бот, к которому мы будем подключаться

2. Даём имя будущему боту и создаём приложение

3. В новом окне довольно много всего, в чём вы можете самостоятельно разобраться. Нас же интересует «OAuth2» и «Bot»

4. Переходим в «Bot» и по нажатию кнопку в правой части экрана создаём самого бота

5. В новом окне включаем эти две галочки

1653195577581.png

а также в «Bot Permissions» снизу выбираем «Administrator»

6. Теперь переходим в «OAuth2», ставим галочки «Bot» и «Administrator» и копируем ссылку для приглашения бота

7. Переходим по этой ссылке и добавляем бота на сервер. Поздравляю! На данный момент у нас есть бот, который всегда в оффлайне и ничего не делает. Давайте его оживим

Спойлер: Создание проекта

Создаём консольное приложение .NET Core (кроссплатформенное, не .NET Framework). Думаю тут справится каждый, но если надо могу сделать гайд по установке Visual Studio и созданию проекта в ней.

Спойлер: Установка необходимых пакетов

Отлично! Теперь нам нужно установить необходимые пакеты для работы с библиотекой Discord.net. Клацаем правой кнопкой мыши по нашему проекту и ищем NuGet

1653195637365.png

В открывшемся окне устанавливаем 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

Спойлер: Оживление бота

 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(); >) // думаю тут понятно .UseConsoleLifetime(); var host = builder.Build(); using (host) < // запускаем бота await host.RunAsync(); >>

(НАВЕДИТЕСЬ НА ОШИБКУ ЕСЛИ ОНА ВОЗНИКАЕТ — СКОРЕЕ ВСЕГО ВЫ ПРОСТО НЕ ПОДКЛЮЧИЛИ В USING’АХ БИБЛИОТЕКИ, КОТОРЫЕ МЫ УСТАНАВЛИВАЛИ В НАЧАЛЕ ГАЙДА)

Но не спешите это запускать. Теперь нам нужно добавить файл конфигурации config.json, а также обработчик команд и сами команды.
Кликаем правой кнопкой мыши по проекту и создаём json файл и пишем в нем это:

JavaScript:

Чтобы получить токен переходим сюда
во вкладку «Bot» и нажимаем Copy. Вставляем его вместо «ВАШ ТОКЕН»

ВАЖНО! Клацаем по config.json (или как вы его там назвали) и переходим, в моем случае. в Properties. В открывшемся окне ставим вместо Do not copy -> Copy if newer

Теперь с помощью CTRL+F5 можно запустить нашего бота и он будет онлайн в дискорде до тех пор, пока вы не закроете приложение

Спойлер: Создание команд и их оброботчика
В CommandHandler.cs:

public class CommandHandler : InitializedService < private readonly IServiceProvider _provider; private readonly DiscordSocketClient _client; private readonly CommandService _service; private readonly IConfiguration _config; public CommandHandler(IServiceProvider provider, DiscordSocketClient client, CommandService service, IConfiguration config) < _provider = provider; _client = client; _service = service; _config = config; >public override async Task InitializeAsync(CancellationToken cancellationToken) < _client.MessageReceived += OnMessageRecevied; _service.CommandExecuted += OnCommandExecuted; await _service.AddModulesAsync(Assembly.GetEntryAssembly(), _provider); >private async Task OnCommandExecuted(Optional commandInfo, ICommandContext commandContext, IResult result) < if (result.IsSuccess) < return; >await commandContext.Channel.SendMessageAsync(result.ErrorReason); > private async Task OnMessageRecevied(SocketMessage socketMsg) < if (!(socketMsg is SocketUserMessage message)) return; if (message.Source != MessageSource.User) return; var argPos = 0; if (!message.HasStringPrefix(_config["prefix"], ref argPos) && !message.HasMentionPrefix(_client.CurrentUser, ref argPos)) return; var context = new SocketCommandContext(_client, message); await _service.ExecuteAsync(context, argPos, _provider); >>

Наш бот теперь может обрабатывать команды, почти готово! Осталось лишь добавить файл с командами. Опять же для удобства создадим папку Modules и добавим в нее файл класса General.cs
Кстати, раскоментируем-ка кое-что в Program.cs:

 .ConfigureServices((context, services) => < services .AddHostedService(); >)

public class General : ModuleBase

Класс и всё необходимое создано, как же добавить команды?
Создадим команду, которая повторяет сообщение пользователя:

 public class General : ModuleBase  < [Command("echo")] private async Task Echo(string msg) < await Context.Channel.SendMessageAsync(msg); >>

Или что-нибудь поинтереснее, например, вывод информации о пользователе:

 [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()); >>

1653196100008.png

Спойлер: Завершение

На этом пока что всё. Подробнее о командах, методах и всём можно узнать просто покопавшись в коде или в документации

Создание бота на основе discord.py. Часть 1

Это первая статья про создание бота для Discord. В конце статьи находятся ссылки на следующие части, со временем они будут дополняться. Статьи следуют друг за другом, без каких-либо «информационных дыр». Если нашли опечатку или неточность, отпишите о проблеме в комментариях или в личных сообщениях, максимально оперативно всё поправим! А теперь переходим непосредственно к созданию бота.

В данной части

  1. Создание тестового сервера
  2. Включение режима разработчика
  3. Создание приложения и получение токена
  4. Добавление бота на сервер
  5. Установка библиотеки discord.py
  6. Первые строчки кода

Создание сервера

Гайд будет максимально подробный, поэтому и начинать будем с создания тестового сервера. Зачем он нужен? Лишь для вашего удобства и безопасности, если у вас уже есть большой сервер, тем более не стоит сразу добавлять на него разрабатываемого бота. Никто не защищён от багов и дыр в безопасности.

  1. Заходим в дискорд
  2. Слева видим список серверов, листаем в самый низ до кнопки «Создать сервер«.
  3. Создаём сервер по любому из предложенных шаблонов.

Включаем режим разработчика

Это необязательно, но очень желательно. В режиме разработчика появляются некоторые полезные элементы для удобства разработки, например, в меню пользователя появляется пункт, который позволяет скопировать его ID.

Чтобы включить этот режим, заходим в настройки.

В категории «Настройки приложения» ищем «Расширенные«.

И включаем режим разработчика.

Получение токена

Для начала нам нужно зайти на страницу создание приложений и нажать New Application.

После этого вам предложат назвать ваше приложение (Потом можно будет изменить).

Создание приложени

После создания, попадаем на страницу настройки приложения. В меню выбираем «Bot«.

На данной странице нажимаем на «Add Bot«. Скопируем токен и сохраним его.

Так же, сразу можно выдать дополнительные разрешения боту, чтобы потом об этом не задумываться.

Добавление бота на сервер

В меню ищем пункт OAuth2 –> URL Generator.

В поле SCOPES выбираем bot и applications.commands. В появившемся ниже поле выбираем Administrator, это более удобно для тестирования. Но когда бот будет работать в продакшене, лучше выставлять только те права, которые правда нужны, потому что никто не защищён от потери токена, а с правами администратора это может стать очень большой проблемой.

Копируем появившеюся ниже ссылку и вставляем в адресную строку браузера. Если у вас не выполнен вход в браузере, его необходимо произвести. После чего выбираем тестовый сервер из списка и нажимаем «Продолжить» и далее «Авторизовать«.

Ура! Наш бот на тестовом сервере!

Установка библиотеки

Для начала нужно установить python, данный этап не расписан, но желательно установить версию 3.10 (Последняя версия на момент написания 3.10.5). Если у вас Windows, для проверки можете использовать следующую команду

py --version

В ответ получите версию вашего python. Устанавливать будем не стабильную, а разрабатываемую версию, для этого пропишем следующую команду. (Это можно делать уже внутри проекта). Хотя некоторые IDE устанавливаю git вместе с собой, можете скачать его отдельно.

py -m pip install git+https://github.com/rapptz/discord.py

Если всё же хотите установить стабильную, релизную версию, пропишите следующую команду.

py -3 -m pip install -U discord.py py -3 -m pip install -U discord.py[voice]

Подробнее про установку библиотеки и саму библиотеку можно прочитать тут.

Первые строчки кода

Пришло время писать код! Программирование в статьях будет происходить в PyCharm, хоть это и довольно тяжёлая IDEA, она удобная и бесплатная для студентов.

Не советую создавать проект через внутренний интерфейс, может появиться множество ненужных папок и файлов, вместо этого создадим папку проекта вручную и откроем как пустой проект.

Для этого заходим в PyCharm, далее File –> Open.

P.s. Не обращайте внимания на другую тему IDE.

В появившемся окне ищем созданную папку, выбираем её и нажимаем «Ok«. Обратите внимание на то, что нужно просто нажать по папке, а не проваливаться в неё.

Если PyCharm автоматически не создал main.py, создайте его вручную.

Вставляем код ниже и запускаем.

import discord # Подключаем библиотеку from discord.ext import commands intents = discord.Intents.default() # Подключаем "Разрешения" intents.message_content = True # Задаём префикс и интенты bot = commands.Bot(command_prefix='>', intents=intents) # С помощью декоратора создаём первую команду @bot.command() async def ping(ctx): await ctx.send('pong') bot.run('token') 

В консоли вы увидите логи запуска бота. Они могут быть красными, не бойтесь, сначала прочитайте сами сообщения, они скорее, всего просто информационные.

Идём в дискорд и используем нашу первую команду.

Немного объясним данную структуру. Поскольку это обычная команда, вся информация хранится в ctx(Переменная одноимённого класса). Она имеет следующие поля:

['args', 'author', 'bot', 'channel', 'cog', 'command', 'command_failed', 'guild', 'invoked_parents', 'invoked_subcommand', 'invoked_with', 'kwargs', 'me', 'message', 'prefix', 'subcommand_passed', 'valid', 'voice_client']

И следующие команды:

['fetch_message', 'history', 'invoke', 'pins', 'reinvoke', 'reply', 'send', 'send_help', 'trigger_typing', 'typing']

Если вы знакомы с синтаксисом языка, то данный список можно получить с помощью встроенной функции dir.

print(dir(ctx))

На более правильно прочитать документацию про Context.

Заключение

Сразу отвечу всем комментаторам. Да — подобных статей море, в том числе есть официальная документация. Но поскольку в моих планах есть создать серию статей, я хотел бы, что бы в них было описано всё, начиная с самых азов.

И небольшое примечание. Статьи строятся на основании того, что у вас есть опыт и знания программирования на python.

Бот Discord: как создать и добавить на сервер

Чтобы подключить бота Discord в ваше приложение, вам понадобятся токен бота (для настройки модуля) и ID канала, в который вы будете отправлять сообщения (для формы отправки).

Расскажем, как создать сервер, канал и бота Discord, а после добавить созданного бота на ваш сервер. О том, как настроить отправку сообщений на платформе AppMaster.io, можно прочитать в этой статье.

Создать сервер и канал, скопировать ID канала

Для начала вам нужно создать новый сервер в Discord (или получить права администратора на уже существующем). Откройте страницу вашей учетной записи Discord в браузере — так будет удобнее перемещаться между страницами настроек.

1.Нажмите на «+» на левой панели.

2.Выберите шаблон сервера в зависимости от вашей сферы или создайте собственный.

3.Укажите, для каких целей хотите его использовать.

4.Выберите изображение будущего сервера и укажите его название (1), затем нажмите Create. (2).

5.Сервер создан. По умолчанию в него уже добавлены два канала — текстовый и голосовой (1). Чтобы изменить настройки канала, нажмите значок шестеренки (2). Добавить новый канал можно, нажав на «+» рядом с названием раздела. Мы не будем создавать новый канал и для подключения нашего бота используем уже существующий канал general.

6.Теперь нужно получить ID выбранного канала. Для этого нужно сначала включить режим разработчика в настройках вашего профиля. Нажмите на значок шестеренки рядом с вашим никнеймом и фотографией.

7.Перейдите в раздел APP SETTINGS, на вкладку Advanced (1) и переместите селектор Developer mode — режим разработчика активируется (2).

8.Вернитесь из меню настроек и кликните по нужному каналу правой клавишей мыши (1), во всплывающем меню выберите Copy ID — идентификатор вашего канала будет скопирован (2). Сохраните его в любом текстовом документе, чтобы не возвращаться к этому шагу.

Создать бота и добавить его на сервер, скопировать токен бота

Чтобы создать бота, перейдите на специальную страницу Discord для разработчиков: https://discord.com/developers/. Откройте ее в соседней вкладке браузера, не выходя из вашей учетной записи Discord.

Сначала вам нужно создать приложение, затем в этом приложении создать бота и настроить для него разрешения, и только после этого — добавлять бота на сервер.

1.На вкладке Applications выберите New Application.

2.Введите название будущего приложения (1) и нажмите Create (2).

3.Приложение создано. Перейдите не вкладку Bot (1) и нажмите Add Bot, чтобы добавить нового бота.

4.Согласитесь добавить бота в ваше приложение.

5.Бот создан. На вкладке Bot отобразится вся информация о нем. Тут можно изменить его имя, добавить изображение и скопировать токен бота (1). Этот токен понадобится вам для настройки модуля Discord на платформе Appmaster.i. Каждый раз при внесении изменений портал разработчика будет предлагать вам сохранить их (2).

Сохраните токен бота, чтобы при последующей настройке не возвращаться к этому шагу.

6.Теперь перейдите на вкладку OAuth2 (1) — тут можно настроить разрешения и получить ссылку на вашего бота. В разделе SCOPES выберите bot(2), в BOT PERMISSIONS отметьте разрешения, которые хотите ему предоставить, в нашем случае — только отправка сообщений, поэтому выберите Send Message(3). После скопируйте автоматически сгенерированную Discord ссылку(4).

7.Вставьте скопированную ссылку в адресную строку браузера и перейдите по ней — откроется окошко вашего приложения. Выберите ваш сервер в раскрывающемся списке (1) и нажмите Continue (2).

8.Убедитесь, что приложению (а значит, и созданному в нем боту) даны только необходимые разрешения, после чего добавьте его на ваш сервер.

9.Теперь вернитесь на ваш сервер. Бот оставил приветственное сообщение — значит, что он успешно добавлен и функционирует.

Через AppMaster.io Studio подключить бота в приложение

Итак, все готово. Вы получили токен бота для модуля Discord и ID канала для формы отправки сообщения. Теперь перейдите в AppMaster.io Studio и настройте отправку сообщений из вашего приложения, следуя инструкции Модуль Discord: подключение бота и отправка сообщений.

Следите за нашим блогом и присоединяйтесь к чату комьюнити, чтобы узнавать о новостях платформы и новых статьях.

Подробнее о том, что такое модули и как их настраивать — в обучающем видеокурсе AppMaster.io 101.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *