J4j discord что это

Обновлено: 04.07.2024

Для начала вам нужно создать новый сервер в 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). Сохраните его в любом текстовом документе, чтобы не возвращаться к этому шагу.

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

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

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

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

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

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

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

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

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

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

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

Discord4J - это библиотека Java с открытым исходным кодом, которую можно в первую очередь использовать для быстрого доступа к Discord Bot API. Он сильно интегрируется с Project Reactor, чтобы предоставить полностью неблокирующий реактивный API.

В этом руководстве мы будем использовать Discord4J, чтобы создать простого бота Discord, способного реагировать на предопределенную команду. Мы создадим бота поверх Spring Boot, чтобы продемонстрировать, насколько легко было бы масштабировать нашего бота для многих других функций, поддерживаемых Spring Boot.

Когда мы закончим, этот бот сможет прослушивать команду с именем «! Todo» и распечатать статически определенный список дел.

2. Создайте приложение Discord.

Чтобы наш бот получал обновления от Discord и публиковал ответы в каналах, нам нужно создать приложение Discord на портале разработчиков Discord и настроить его как бот. Это простой процесс. Поскольку Discord позволяет создавать несколько приложений или ботов под одной учетной записью разработчика, вы можете попробовать это несколько раз с разными настройками.

Вот шаги для создания нового приложения:

  • Войдите на портал разработчиков Discord
  • На вкладке «Приложения» нажмите «Новое приложение».
  • Введите имя для нашего бота и нажмите «Создать»
  • Загрузите значок приложения и описание и нажмите «Сохранить изменения».

Теперь, когда приложение существует, нам просто нужно добавить к нему функции бота. Это сгенерирует токен бота, который требуется Discord4J.

Вот шаги, чтобы превратить приложение в бота:

  • Во вкладке Applications выбираем наше приложение (если оно еще не выбрано).
  • На вкладке «Бот» нажмите «Добавить бота» и подтвердите, что мы хотим это сделать.

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

Теперь мы готовы написать код!

3. Создайте приложение Spring Boot.

После создания нового приложения Spring Boot нам необходимо обязательно включить зависимость ядра Discord4J:

Discord4J работает, инициализируя GatewayDiscordClient с помощью токена бота, который мы создали ранее. Этот клиентский объект позволяет нам регистрировать прослушиватели событий и настраивать многие вещи, но как минимум мы должны вызвать метод login () . Это покажет, что наш бот находится в сети.

Во-первых, давайте добавим токен нашего бота в наш файл application.yml :

Затем давайте внедрим его в класс @Configuration, где мы можем создать экземпляр нашего GatewayDiscordClient :

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

4. Добавьте слушателей событий

Есть много типов событий, которые мы можем слушать. Однако регистрация слушателя одинакова для всех них, поэтому давайте сначала создадим интерфейс для всех наших слушателей событий:

Теперь мы можем реализовать этот интерфейс для любого количества расширений discord4j.core.event.domain.Event .

Прежде чем мы реализуем наш первый прослушиватель событий, давайте изменим конфигурацию нашего клиента @Bean так, чтобы он ожидал список EventListener, чтобы он мог регистрировать все, найденные в Spring ApplicationContext :

Теперь все, что нам нужно сделать для регистрации прослушивателей событий, - это реализовать наш интерфейс и аннотировать его стереотипными аннотациями Spring на основе @Component . Теперь регистрация для нас будет происходить автоматически!

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

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

4.1. Обработка команд

Once we have the Message, we can check the author to make sure it is not a bot, we can check the message contents to make sure it matches our command, and we can use the message's channel to send a response.

Since we can fully operate from both events through their Message objects, let's put all downstream logic into a common location so that both event listeners can use it:

A lot is going on here, but this is the most basic form of a command and response. This approach uses a reactive functional design, but it is possible to write this in a more traditional imperative way using block().

Scaling across multiple bot commands, invoking different services or data repositories, or even using Discord roles as authorization for certain commands are common parts of a good bot command architecture. Since our listeners are Spring-managed @Services, we could easily inject other Spring-managed beans to take care of those tasks. However, we won't tackle any of that in this article.

4.2. EventListener

To receive new messages from a user, we must listen to the MessageCreateEvent. Since the command processing logic already lives in MessageListener, we can extend it to inherit that functionality. Also, we need to implement our EventListener interface to comply with our registration design:

Through inheritance, the message is passed off to our processCommand() method where all verification and responses occur.

At this point, our bot will receive and respond to the “!todo” command. However, if a user corrects their mistyped command, the bot would not respond. Let's support this use case with another event listener.

4.3. EventListener

The MessageUpdateEvent is emitted when a user edits a message. We can listen for this event to recognize commands, much like how we listen for the MessageCreateEvent.

For our purposes, we only care about this event if the message contents were changed. We can ignore other instances of this event. Fortunately, we can use the isContentChanged() method to filter out such instances:

In this case, since getMessage() returns Mono instead of a raw Message, we need to use flatMap() to send it to our superclass.

5. Test Bot in Discord

Now that we have a functioning Discord bot, we can invite it to a Discord server and test it.

To create an invite link, we must specify which permissions the bot requires to function properly. A popular third-party Discord Permissions Calculator is often used to generate an invite link with the needed permissions. Although it's not recommended for production, we can simply choose “Administrator” for testing purposes and not worry about the other permissions. Simply supply the Client ID for our bot (found in the Discord Developer Portal) and use the generated link to invite our bot to a server.

If we do not grant Administrator permissions to the bot, we might need to tweak channel permissions so that the bot can read and write in a channel.

The bot now responds to the message “!todo” and when a message is edited to say “!todo”:


6. Overview

Исходный код готового и работающего бота можно найти на GitHub. Для его запуска требуется действующий токен бота.

Discord4J - это библиотека написанная на Java 8, выполняющая роль интерфейса к Discod API. С помощью нее как раз можно сделать чат-бот для вашего Discord-сервера.

Для реализации эхо-бота в рамках данной статьи, нам понадобится:

  • Java 8 (JDK 8)
  • Eclipse IDE с поддержкой Maven проектов (с 2016 года интеграция Maven в Eclipse идет "в коробе", начиная с Eclipse Neon)
  • Discord4J (на момент написания статьи, использовалась версия v2.7.0)

1. Создание проекта в Eclipse с использованием Maven

Для начала создаем Maven проект в Eclipse. File -> New -> Project . или Alt + Shif + N -> Project . . В списке находим категорию Maven и в ней выбираем Maven Project. Жмем далее.

tetraquarkru_discordbot_2_1

В следующем окне обязательно ставим галочку "Create a simple project". Жмем далее.

tetraquarkru_discordbot_2_2

В следующем окне заполняем поля Group ID, Artifact ID, Name, Description на свой вкус. Жмем финиш.

tetraquarkru_discordbot_2_3

Таким образом мы создали пустой Maven проект для нашего будущего бота, содержание которого примерно следующее:

tetraquarkru_discordbot_2_4

Открываем в текстовом редакторе файл проекта: pom.xml.

tetraquarkru_discordbot_2_5

В блок <project> (где-то между <project> и </project>) добавляем следующие тэги:

Сохраняем файл и обновляем проект следующим образом: правой кнопкой мыши по проекту в Package Explorer, в всплывающем меню выбираем: Maven -> Update Project.

После проделанной процедуры Maven автоматически загрузит с указанных репозиториев в pom.xml зависимые библиотеки, в нашем случае это Discord4j, и встроит их в проект.

Если ничего плохого не произошло, то проект готов и переходим к написанию кода.

2. Пишем код

Создаем новый package в src/main/java, в нем создаем новый класс для своего бота.

Я приведу пример того, что получилось у меня. Подробно описывать этот код я не буду, потому что эти 100 строк крайне просты. Я добавил комментарии к коду, чего для понимая должно хватить.

Ниже привожу полный код эхо чат-бота (ниже есть ссылка на Github проекта):

Хочу рассказать про использование мессенджера Discord как основного средства коммуникации в команде. Опыт может быть полезен другим командам, использующим бесплатные мессенджеры, а также всем, кто ищет пути повышения эффективности использования мессенджеров.

Discord – программа странная и выдающаяся одновременно. Почему? Хотя бы потому, что про способы работы в Discord получилась целая статья.




Что-то пошло не так


Давайте сначала разберемся, что не так с «обычными мессенджерами»: Skype, Viber и им подобными.
В данной статье я рассматриваю исключительно мессенджеры, у которых основной функционал доступен бесплатно. Да, существуют прекрасные платные программы, но они за рамками данной статьи, даже если имеют бесплатный урезанный режим.

Обычные мессенджеры устроены так, чтобы работать «из коробки» и без всякого администрирования. Это вполне здравый подход, обеспечивающий низкий порог вхождения: просто создали групповой чат и общаемся в нём. По-другому эти мессенджеры не могут, так как сложные процедуры настройки отпугнут основную аудиторию. Но, как обычно, низкие начальные вложения оборачиваются высокими эксплуатационными издержками. Какие проблемы имеем в итоге.

Разделение по темам. Чем больше пользователей в группе, тем больше количество обсуждаемых тем. Большинство тем интересны ограниченному числу пользователей группы. Подход здорового человека заключается в том, чтобы создавать тематические группы и включать в них только тех, кому тема интересна – такая изоляция уменьшает «информационный шум» от ненужного контента. Но на практике это приводит к полному хаосу. Например, имеем 10 чатов по работе, 4 чата детского сада, 3 чата многоквартирного дома и так далее. И всё это в одном пространстве имён, поэтому мы начинаем путаться в чатах. Они уползают вниз списка, забываются, потом создаются дубликаты забытых чатов, но туда забывают добавить всех пользователей. Если же количество участников примерно от полсотни и выше, то никакие параллельные чаты уже не создаются – слишком сложно поддерживать актуальный список участников. Ведется один супер-чат, содержащий все вопросы жизни, вселенной и всего такого. Результат: большие группы в мессенджерах становятся «токсичными»: контент неинтересен из-за большого количества мусора, мы присутствуем в группах только из-за необходимости.

Discord: начало

Теперь переходим к Discord. Прежде всего заметим, что в Discord есть два режима или, скорее, «вида»: назовем их «обычный» и «сервер». Они существуют параллельно и имеют разные цели. В «обычном» виде Discord – это такой же обычный мессенджер, как и все остальные. Даже с более ограниченными возможностями, чем тот же Skype:

Сервер

Чтобы работать с сервером, надо этот самый сервер иметь. Для определенности будем считать, что мы сотрудники стартапа «Рога и Копыта», поэтому наш сервер будет называться «РК». Создаем сервер путем нажатия на кнопку с большим знаком «+». Сервер – это уютное место, где будет проходить всё наше корпоративное общение (кроме 1-на-1, которое в «обычном» виде, вне сервера). Пользователи должны присоединиться к серверу по приглашению.


В левой панели сразу видим две новые сущности:

  • Текстовые каналы. Это аналог чата, но с некоторыми особенностями и дополнительными функциями. Набор каналов сервера относительно стабилен: каналы всегда остаются на месте, не уползают вниз в истории, как в мессенджерах. Каналы удобны благодаря ролям и упоминаниям, о них далее.
  • Голосовые каналы. В этих каналах мы общаемся голосом. Примерно как радиоприемник: нажимаем на канал (выбираем радиостанцию) и сразу же слышим поток вещания и ещё говорить сами можем. Голосовой канал – это поток, он не имеет начала и конца, нет инициатора звонка и нет самого звонка, который позовёт участников. Подключение к каналу мгновенное. Забудьте про «Я звоню, все ли готовы?» «Добавьте меня в звонок!» «Где ссылка на митинг?». Просто тык в канал — и через пол-секунды вы слышите голоса. Никакого текста в голосовых каналах нет — пишем мы в текстовые каналы. Голосовых каналов нужно столько, сколько голосовых митингов вам нужно вести параллельно. Весьма вероятно, что одного хватит.

Какие роли создавать – решаем сами. Роль соответствует некоему типичному набору действий пользователя. Например, на нашем сервере сделаем такие роли:


  • everyone – техническая роль, означает «все, кто на сервере»; она уже есть и удалить её нельзя.
  • сотрудник – назначаем роль всем сотрудникам, она дает способность видеть в темноте все основные каналы.
  • админ – имеет права администрировать всё остальное. Главнее админов только владелец сервера, который и дает роли админам.
  • кандидат – это не сотрудник, а тот, кого будем собеседовать. Данная роль позволяет придти на наш сервер (по приглашению) и участвовать в удаленном собеседовании: видит он только два канала «собеседование» – текстовый и голосовой.
  • собеседующий – сотрудник, который проводит собеседование. Это не какой-то специальный человек, а просто любой сотрудник с дополнительной ролью. Собеседующий кроме всех своих каналов видит ещё текстовый и голосовой каналы «собеседование». Остальным сотрудникам (тем, кто не хочет участвовать в собеседовании) роль не даем и они не видят эти два лишних (для них) канала.

Каналы

Текстовые каналы на нашем сервере могут быть, например, такие:

  • Каналы «работы» и «детского сада» не перемешаются, так как они будут в пределах разных серверов.
  • Каналы не уползают вниз и не меняют порядка, они на фиксированном месте.
  • Добавление даже большого количества пользователей в созданный канал делается быстро, через права ролей в канале.
  • Нанят новый сотрудник: даем ему нужные роли. Он автоматически попадает в правильные каналы.
  • Увольнение сотрудника: выгоняем с сервера.
  • Создание нового канала: обычно клонируем существующий, если нужны те же права. Настраиваем права ролей – и пользователи автоматически попадают в канал.
Убрать уволившегося сотрудника из всех рабочих чатов в <любом мессенджере>. При этом полного списка чатов нет, а создатель чатов в отпуске.

Упоминания


Можно упомянуть роль:


А вот так можно упомянуть всех, кто есть в канале (любой из этих вариантов работает):



  • Если вы вы не были упомянуты, то нотификация слабая: красный круг в таскбаре и маленькая чёрная пипка в названии канала.
  • Если же вас кто-то упомянул, то нотификация более заметная: красный круг с числом в таскбаре, на иконке сервера и в названии канала; кроме того иконка Discord в таскбаре мигает оранжевым (пока приложение не получит фокус).

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

А минусы какие?

Технические ограничения в Discord.

Стандартные возможности

В этой статье рассмотрены принципиальные отличия Discord от других мессенджеров, позволяющие значительно увеличить эффективность работы. А вот список мелких фич, которые типичны для мессенджеров и не являются чем-то выдающимся:

А еще есть.

Боты и возможность написания своих ботов. Но это уже совсем другая тема.

Итого

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

Надеюсь, информации в статье достаточно, чтобы решить, надо вам это или нет.

UPD1: Комментарий JustDont:
Перед тем как советовать дискорд для контор, нужно обязательно упоминать о том, что вообще-то нужно внимательно честь Discord Privacy Policy, в которой вполне себе английским или русским по белому написано, что Discord собирает всё, что вы ему отправляете. В том числе и всю вашу переписку, обратите внимание. И совершенно не обещает её шифровать и вообще как-то беречь её конфиденциальность от самих себя. И есть ряд сценариев, в которых эта собранная информация вполне может уйти куда-то, куда вам не очень хочется, чтоб она ушла. И нужно оценивать эти риски.


Предыстория: СМИ: Microsoft может купить главный геймерский мессенджер Сегодня стало известно, что Microsoft планирует приобрести Discord за десять миллиардов долларов. Геймеры мгновенно отреагировали на слухи о продаже любимого игрового приложения — интернет уже полон мемов, шуток и реакций. Лучшие из них мы собрали в этой подборке.

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

. и победить («Кто возьмёт верх: всемирно признанная компания с поддержкой многомиллионной корпорации или какой-то случайный стартап, генерирующий мемы?»)

«Давайте все уйдём из Discord, чтобы поржать над Microsoft». Лучшие мемы, шутки и реакции о покупке Discord

Многие предпочли бы чаще использовать Discord.

«Давайте все уйдём из Discord, чтобы поржать над Microsoft». Лучшие мемы, шутки и реакции о покупке Discord

. главное — отключить уведомления!

«Давайте все уйдём из Discord, чтобы поржать над Microsoft». Лучшие мемы, шутки и реакции о покупке Discord

Мы переживали, когда Discord болел.

«Давайте все уйдём из Discord, чтобы поржать над Microsoft». Лучшие мемы, шутки и реакции о покупке Discord

. видели в нём человека («нарисовал Discord, как если бы он был женщиной»).

. хотя порой он мог доставить неудобства.

«Давайте все уйдём из Discord, чтобы поржать над Microsoft». Лучшие мемы, шутки и реакции о покупке Discord

. и казаться токсичным («Геймеры, когда нашли сервер, устраивающий их по культуре общения: здесь токсично — мне нравится»)

Однако скоро всё может измениться, и Discord станет другим («Discord после приобретения Microsoft»).

. совсем другим («Discord станет частью Microsoft? Ищите меня здесь, ребята!»)

Может не надо («Все пользователи Discord сейчас»)

Многие уже вспоминают Skype (кто-то им вообще ещё пользуется?).

I have Skype ptsd flashbacks.

— Norbajusz (@norbajusz) 23 марта 2021 г.

Может быть всё это — коварный план («Microsoft обсуждает причины купить Discord: зачем рушить одну платформу, когда можешь разрушить две за двойную цену»)?

Хотя слияние Discord с GamePass Ultimate звучит интересно.

. вот только продолжат ли пользователи заходить в приложение («Microsoft, когда половина пользователей Discord, уходит после приобретения?»)

Похоже кто-то готов покинуть Discord ради шутки («Как сложатся дела у Microsoft, когда мы покинем Discord после того, как они его испортят?»)

Читайте также: