Как сделать кейсы в дискорд

Обновлено: 08.07.2024

На каждом шаге будем постепенно наращивать функционал.

Создадим новый web api проект с одним контроллером /check. При обращении к этому адресу будем отправлять строку “Hello!” в Discord чат.

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

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

Напишем Dockerfile для нашего проекта и разместим проект на хостинге Heroku.

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

Реализуем автоматическую сборку, запуск тестов и публикацию проекта после каждого коммита в master

Создание нового проекта - это одна из фундаментальных вещей которые я не буду подробно расписывать. При работе над проектом используйте сервис Github для хранения кода. В дальнейшем мы воспользуемся несколькими возможностями Github.

Добавим к проекту новый контроллер

Получить его можно в пункте integrations в настройках любого текстового канала вашего Discord сервера.

Создание webhook

Создание webhook

Добавим webhook в appsettings.json нашего проекта. Позже мы унесем его в переменные окружения Heroku. Если вы не знакомы с тем как работать с конфигурацией в ASP Core проектах предварительно изучите эту тему.

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

Не забудьте что новый класс нужно будет зарегистрировать в Startup.

Теперь можно воспользоваться новым классом в контроллере.

Получаем реальные данные

Подключим к проекту библиотеку ArgentPonyWarcraftClient.

Создадим новый класс BattleNetApiClient в папке Services.

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

Кроме этого, нужно создать в appsettings проекта две новых записи RealmName и GuildName. RealmName это название игрового мира, а GuildName это название гильдии. Их будем использовать как параметры при запросе.

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

Класс WowCharacterToken следует поместить в папку Models.

Не забудьте подключить BattleNetApiClient в Startup.

Берем данные из заглушки

Для начала создадим модель WowCharacterToken и поместим ее в папку Models. Она представляет собой информацию об игроке.

Дальше сделаем вот такой класс

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

Сделайте интерфейс и подключите все что мы создали в Startup.

Выведем результаты в Discord

После того как мы сделали BattleNetApiClient, им можно воспользоваться в контроллере чтобы вывести кол-во игроков в Discord.

Шаг 3. Находим новых и ушедших игроков

Нужно научиться определять какие игроки появились или пропали из списка при последующих запросах к api. Для этого мы можем закэшировать список в InMemory кэше (в оперативной памяти) или во внешнем хранилище.

Если закэшировать список в InMemory кэше, то мы потеряем его при перезапуске приложения. Поэтому позже мы подключим базу данных Redis как аддон в Heroku и будем кешировать туда.

А пока что подключим InMemory кэш в Startup.

Теперь в нашем распоряжении есть IDistributedCache, который можно подключить через конструктор. Я предпочел не использовать его напрямую , а написать для него обертку. Создайте класс GuildRepository и поместите его в новую папку Repositories.

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

Теперь можно написать сервис который будет сравнивать новый список игроков с сохраненным.

В качестве возвращаемого результата используется модель Report. Ее нужно создать и поместить в папку Models.

Применим GuildService в контроллере.

Теперь отправим в Discord какие игроки присоединились или покинули гильдию.

Можно вывести больше информации об игроке. Ее можно получить если воспользоваться библиотекой ArgentPonyWarcraftClient

Я решил не добавлять в статью больше кода в BattleNetApiClient, чтобы статья не разрослась до безумных размеров.

Unit тесты

У нас появился класс GuildService с нетривиальной логикой, который будет изменяться и расширяться в будущем. Стоит написать на него тесты. Для этого нужно будет сделать заглушки для BattleNetApiClient, GuildRepository и DiscordBroker. Я специально просил создавать интерфейсы для этих классов чтобы можно было сделать их фейки.

Создайте новый проект для Unit тестов. Заведите в нем папку Fakes и сделайте три фейка.

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

Первый тест на GuildService будет выглядеть так:

Как видно из названия, тест позволяет проверить что мы сохраним список игроков, если кэш пуст. Заметьте, в конце теста используется специальный набор методов Should, Be. Это методы из библиотеки FluentAssertions, которые помогают нам сделать Assertion более читабельным.

Теперь у нас есть база для написания тестов. Я показал вам основную идею, дальнейшее написание тестов оставляю вам.

Главный функционал проекта готов. Теперь можно подумать о его публикации.

Шаг 4. Привет Docker и Heroku!

Чтобы упаковать проект в Docker нам понадобится создать в корне репозитория Dockerfile со следующим содержимым

peon.dll это название моего Solution. Peon переводится как батрак.

О том как работать с Docker и Heroku можно прочитать здесь. Но я все же опишу последовательность действий.

Вам понадобится создать аккаунт в Heroku, установить Heroku CLI.

Создайте новый проект в heroku и свяжите его с вашим репозиторием.

Теперь нам необходимо создать файл heroku.yml в папке с проектом. У него будет такое содержимое:

Дальше выполним небольшую череду команд:

Можете открыть приложение в браузере с помощью команды:

После того как мы разместили приложение в Heroku, нужно подключить базу данных Redis для кэша. Как вы помните InMemory кэш будет исчезать после перезапуска приложения.

Установите для нашего Heroku приложения бесплатный аддон RedisCloud.

Строку подключения для Redis можно будет получить через переменную окружения REDISCLOUD_URL. Она будет доступна, когда приложение будет запущено в экосистеме Heroku.

Нам нужно получить эту переменную в коде приложения.

С помощью нее можно зарегистрировать Redis реализацию для IDistributedCache в Startup.

В этом коде мы получили переменную REDISCLOUD_URL из переменных окружения системы. После этого мы извлекли адрес и пароль базы данных с помощью класса RedisUtils. Его написал я сам:

На этот класс можно сделать простой Unit тест.

После того что мы сделали, GuildRepository будет сохранять кэш не в оперативную память, а в Redis. Нам даже не нужно ничего менять в коде приложения.

Опубликуйте новую версию приложения.

Шаг 5. Реализуем циклическое выполнение

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

Есть несколько способов это реализовать:

Третий способ - это подключить к проекту специальные Cron аддоны. Например Heroku Scheduler. Можете пойти этим путем и разобраться как создать cron job в Heroku.

Шаг 6. Автоматическая сборка, прогон тестов и публикация

Во-первых, зайдите в настройки приложения в Heroku.

Там есть пункт Deploy. Подключите там свой Github аккаунт и включите Automatic deploys после каждого коммита в master.


Поставьте галочку у пункта Wait for CI to pass before deploy. Нам нужно чтобы Heroku дожидался сборки и прогонки тестов. Если тесты покраснеют, то публикация не случится.

Сделаем сборку и прогонку тестов в Github Actions.


В репозитории появится новый файл dotnet.yml. Он описывает процесс сборки.

Как видите по его содержимому, задание build будет запускаться после пуша в ветку master.

Содержимое самого задания нас полностью устраивает. Если вы вчитаетесь в то что там происходит, то увидите что там происходит запуск команд dotnet build и dotnet test.

Менять в этом файле ничего не нужно, все уже будет работать из коробки.

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


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

Хочу рассказать про использование мессенджера 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 собирает всё, что вы ему отправляете. В том числе и всю вашу переписку, обратите внимание. И совершенно не обещает её шифровать и вообще как-то беречь её конфиденциальность от самих себя. И есть ряд сценариев, в которых эта собранная информация вполне может уйти куда-то, куда вам не очень хочется, чтоб она ушла. И нужно оценивать эти риски.

В этой статье я подробно расскажу о том, как работать с библиотекой discord.js, создать своего Discord-бота, а также покажу несколько интересных и полезных команд.

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

Начало работы

Если вы уже знакомы с приведёнными ниже материалами, — смело можете пролистать этот раздел.

Для начала работы с кодом нам нужно установить среду разработки, это может быть:

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

Для установки переходим по этой ссылке.



Выбираем свою операционную систему и запускаем скачивание.

Для создания бота мы используем среду выполнения node.js. Для её установки нам необходимо перейти на этот сайт.


На данный момент нас интересует версия долгосрочной поддержки (LTS), скачиваем её.

В Visual Studio Code присутствует возможность устанавливать расширения.
Для этого, кликните по отмеченной ниже иконке.


В открывшемся окне вписываем название название/идентификатор нужного нам расширения, после чего устанавливаем его.


Из полезных расширений могу отметить:

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

Создание бота

Теперь, когда вы установили все нужные компоненты, мы можем приступить к созданию самого бота.

Здесь всё просто. Переходим на портал разработчиков и нажимаем на кнопку с надписью «New Application» — она находится в правом верхнем углу.

В открывшемся окне вписываем имя бота, после чего, нажимаем на кнопку с надписью «Create».


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

Теперь наша задача — воплотить бота в жизнь. Для этого переходим во вкладку «Bot».


Нажимаем на кнопку с надписью «Add Bot» и воплощаем бота в жизнь.

Поздравляю! Вы создали аккаунт для вашего бота. Теперь у него есть тег, токен, ник и иконка.

Подготовка к написанию кода

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

Первым делом создаём папку, после чего открываем её в VS Code (Файл > Открыть папку) / (Ctrl + K Ctrl + O)

Далее нам нужно открыть терминал (Терминал > Создать терминал) / (Ctrl + Shift + `)


Теперь мы должны создать файл с неким «описанием» нашего бота, сделаем это через терминал.

Вписываем данную строку в терминал и нажимаем Enter:


После каждой появившейся строки нажимаем Enter или вписываем свои значения.
Значения в этом файле можно будет изменить в любой момент.

Далее, мы должны поочерёдно вводить в терминал эти строки:

«Install» также можно сокращать в «I», но необязательно.

Итого, если вы следовали инструкциям и всё сделали правильно, в вашей папке должны были появиться 3 объекта:


Написание кода

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

Существует множество вариантов для его написания: используя один файл, два, несколько, и т.д

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

Но не волнуйтесь, весь код вам писать не придётся.

Для начала, нам нужно где-то хранить основные параметры и информацию о боте.

Мы можем сделать это двумя способами:

  1. Создать отдельный файл
  2. Записать всё в константы

Разберём хранение параметров в отдельном файле.

Итак, создаем файл config.json

Вставляем в него следующий код:


* Для получения токена зайдите на портал разработчиков, перейдите во вкладку «Bot» и скопируйте его.


* Самым распространённым среди разработчиков префиксом является !

Далее нам нужно создать файл bot.js и вставить в него данный код:


Теперь создаём файл comms.js, в нём будут сами команды.

В нём должен быть следующий код:


Чтобы добавить больше команд — просто объявляйте больше функций и добавляйте их в список, например:


И вот, мы вышли на финишную прямую!

Осталось всего ничего — запустить бота.

Для этого открываем терминал и вставляем в него следующую строку:



Готово! Бот запущен и вы можете им пользоваться, ура!

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

Перейдём во вкладку OAuth2, пролистаем чуть ниже, выберем «Bot» и отметим нужные боту привилегии.


Как вывести ссылку-приглашение в терминал, при запуске бота?

Существует два способа:

    Заранее отметить нужные привилегии.


Итоговый код должен быть таким:


Чтобы указать несколько привилегий, мы должны перечислить их в квадратных скобках, через запятую:


* Все привилегии указываются заглавными буквами

Список доступных привилегий:

ADMINISTRATOR
CREATE_INSTANT_INVITE
KICK_MEMBERS
BAN_MEMBERS
MANAGE_CHANNELS
MANAGE_GUILD
ADD_REACTIONS
VIEW_AUDIT_LOG
PRIORITY_SPEAKER
STREAM
VIEW_CHANNEL
SEND_MESSAGES
SEND_TTS_MESSAGES
MANAGE_MESSAGES
EMBED_LINKS
ATTACH_FILES
READ_MESSAGE_HISTORY
MENTION_EVERYONE
USE_EXTERNAL_EMOJIS
VIEW_GUILD_INSIGHTS
CONNECT
SPEAK
MUTE_MEMBERS
DEAFEN_MEMBERS
MOVE_MEMBERS
USE_VAD
CHANGE_NICKNAME
MANAGE_NICKNAMES
MANAGE_ROLES
MANAGE_WEBHOOKS
MANAGE_EMOJIS

Полезные и интересные команды

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

Во всем мире начался внеплановый «эксперимент» по переходу в онлайн-режим работы. Многие организации к этому не готовы, трудности возникают и в IT.

В Kode я PM, руковожу мобильной разработкой для крупной авиакомпании, этот проект в нашем портфеле уже 4 года. Казалось бы, мы к станку не привязаны и все процессы отлажены. При этом все понимают, что удаленный режим — это не каникулы.

Но команде оказалось сложно работать из дома.

С одной стороны, что такого, открыл ноутбук и работай. Но с другой, паттерн работы привязан к офису, где есть офлайн-встречи, ритуалы и коммуникации. Ребята оказались дома один на один с отсутствием привычного стиля работы.

Итак, что я сделал, чтобы качество работы и моральный дух команды не пострадали?

Так сложилось, что для коммуникации внутри Kode и с заказчиками мы используем Mattermost, Slack, Telegram, Skype, Hangouts, электронную почту. И многие рабочие вопросы решаются в переписках в многочисленных чатиках.

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

Первым делом создал сервер для своей команды. Сразу настроил приватность (исключил все права для роли @everyone). При создании сервера становишься его админом, можно сделать админом любую другую роль или полностью передать сервер любому человеку.

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

Все новые участники при подключении не увидят никакой информации, если для роли @everyone права сняты, поэтому не забудь назначить им роль.

Создал общий командный чат, канал для отчетов и планов на день. Создал каналы для каждой роли команды (@backend, @qa etc), чтобы ребята могли обмениваться картинками и ссылками не на всю команду. Хотя думаю, чаты по ролям все таки немного лишние, потому что все можно решить в общем чате.

Сами чаты поддерживают markdown, поэтому все привычные функции типа вставки кода, форматирования текста в наличии.

К любому текстовому чату можно подключить вебхук и слать из внешних систем все то, что мы любим. В моем случае это Gitlab при MRах, Grafana при алертах об ошибках в сервисе и elastalert при срабатывании поисковых правил.

Настраивается супер изич, соответственно никаких прокси, как для тележки.

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

А еще история поиска по истории.

Вывод — текстовые каналы великолепны в Discord, пока самое удобное, что я пробовал.

Тут начинается настоящая магия. Основной функционал Discord — общение голосом во время игры. Я создал 5 голосовых каналов (количество каналов и участников в них на сервере не ограничено). И всё — в один клик ребята подключаются и мы уже слышим друг друга.

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

В голосовых каналах я провожу standup, планирование, ретроспективы, кикофф etc. Ребята обсуждают решение задач.

Все встречи делятся на два типа — спонтанные и плановые. Плановые встречи, как обычно, заносим в календарь и приглашаем друг друга. На встречах, инициатор шарит свой экран. Все договоренности фиксируем в произвольной форме в чате (чтобы все остальные, кого может затронуть вопрос тоже были в курсе).

Через неделю использования Discord ребята привыкли и полилась нормальная коммуникация по работе фич.

Пример. Особенно обрадовало, что некоторые вопросы раньше затягивались на пару дней (терялось в куче чатиков). В Discord с момента появления вопроса до его решения прошло около 10 минут.

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

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

И небольшой бонус для тех, кто дочитал, шаги для запуска Discord:

  • Создай сервер.
  • Убери все права у роли @everyone.
  • Заведи необходимые тебе роли.
  • Настрой права для ролей в текстовом чате по умолчанию и головой комнате.
  • Создавай любые чаты и комнаты, они наследуют права от первых (иначе в каждой настраивать придется).
  • Приглашай команду, назначай роли.

В итоге, я создал свой приватный сервер для команды с собственными ролями, голосовыми комнатами и плюхами.

  • Достаточный инструмент, который исключает mattermost (slack), skype, telegram, zoom и прочие мессенджеры для команды. Все общение в одном месте — текстом, голосом, видео.
  • В Discord есть сервер у нашего заказчика, поэтому и голосовое общение с заказчиком перекочевало сюда же.
  • Бесплатно и достаточно стабильно.
  • Периодические баги на маке.
  • Нет видео встреч на сервере команды.
  • Переводится на русский, как «Диссонанс», «Раздор».

Перевели школу в дискорд :) Самарский центр идёт в ногу со временем

Очень крутой кейс, молодцы

красавцы, можно статью писать:D

Так то можно, но зачем куча одинаковых статей?)
Разве что ради пиара нашего заведения.

ну я бы не сказал, что сильно похоже
айтишная компания и команда то ладно, но чтобы школу — это топ

Уговорил, сел писать :D

Я подписался, чтобы прочитать, поэтому никаких отговорок, жду статью :)

ну че, поймал на слове:DDD

у меня жена в колледже работает и там тоже они в дискорде сидят..

"Центр для одарённых" это шедеврально 😀

Ну. Наш центр так и называется :D Самарской региональный центр для одаренных детей.

А, тогда всё становится на свои места :) Я думал это обычная школа, а вы просто очень любите своих учеников :)

А вы заставляете всех выключать микрофоны я так понимаю? Потому что иначе будет балаган

Так же можно включить приоритет роли учителей и тогда пока говорит учитель ученики не могут перебить его и начать разговор.

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

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

Я думаю, что в свете последних событий должен появится какой-то сервис по типу "все в одном окне". Например, Битрикс24 недавно презентовал что-то подобное. Microsoft Team вроде тоже в эту сторону идут. Так что, поживем увидим.

Да, Битрикс очень активно над этим работает. Им явно вся эта движуха - к развитию.

Представлена платформа Nextcloud Hub для организации совместной работы

качество связи голосом в дискорде — шикблеск
инструмент изначально делался для геймеров, у которых не должно быть "я залагал и не услышал" — ребята очень хорошо постарались, чтобы связь была максимально чистой и без пропаж сигнала

У вас была включена двухфакторная авторизация?

Так иногда забавно читать как ламеров взламывают очевидными фишингами и прочим бредом. Наверное ещё и антивирус используешь)

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

Если из этого исходить, то никакая 999факторная авторизация не поможет. В один момент просто какой-нибудь RAT этот сотрудник подцепит, разнесёт на компы своих коллег и будете всем офисом майнить биткойны даркнетовским ворюгам.

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

Я не уверен, что телеграм или slack защитит от нажатия на фишинговую ссылку

вы наверное еще и дискорд в браузере использовали? а 2х факторная авторизация используется не через почту, которую у вас наверное тоже "хакали", а через специальные приложения, которые ставятся на отдельное устройство (6ти значный код) и без него невозможно войти..

телеграм как правило стоит на компе как приложение.. доступ к аккаунту получить значительно сложнее, т.к. код подтверждения уходит на телефон.. а не на почту.. а доступ к ее локальной базе (на компе) - можно так же получить.

так что проверяйте свои компы и не ходите по левым ссылкам.

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

Уточню: ссылку на сервер можно сделать и перманентной

Дискорд хороший. Раньше был слак, теперь тоже сидим в дискорде.

При чем, у меня это вторая попытка, но предыдущая не зашла. В этот раз поразбирался, настроил, и все взлетело )

Я может путаю с ММ, но по-моему 10К

Почему слак так хорош для компаний по сравнению с телеграмом?

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

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