srg91

Миссия - подружить форум и Discord

9 сообщений в этой теме

Всем привет.

 

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

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

Поэтому я напишу те идеи, к чему мы пришли мельком посмотрев на него и возможно у кого-нибудь (кто лучше с ним знаком) возникнут пожелания или замечания :)

 

Итак, примерный вариант использования:

  1. У нас в Discord появляется свой сервер
  2. На главной форума появляется блок с виджетом дискорда, который при нажатии "Connect" открывает приложение / веб версию
    1. Если у пользователя нет Discord, то ему нужно в нем зарегистрироваться (этот пункт насколько я понимаю не обойти)
    2. Если у пользователя есть Discord, то он попадает на наш сервер
  3. Далее вопрос, пришел ли пользователь впервые:
    1. Если пользователь пришел в первый раз, то он представляется логином с форума
      1. Для подтверждения, что это точно он - пользователь возвращается на форум и подтверждает, что это его запрос
    2. Если пользователь уже был, то он фактически оказывается на нашем сервере
  4. ???
  5. PROFIT

 

Собственно так как пользователь подтверждает логин на форуме мы знаем о его группе (Пользователь, Разработчик, etc) и можем управлять правами доступа и т.д.

 

Ждем ваших комментариев :)

 

@Kvazimado, @partoftheworlD возможно вам будет интересна эта информация

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Как вариант использовать почту на которую создавался аккаунт на форуме в дискорде, так можно не запариваться с никами.

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, partoftheworlD сказал:

Как вариант использовать почту на которую создавался аккаунт на форуме

Почта скрыта для участников форума, поэтому не стоит ее как-либо привлекать в таких публичных делах.

1 час назад, partoftheworlD сказал:

генерировать новый логин

Разве так можно? Вроде бы без регистрации в дискорд тебя никак не пустит.

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, uhx сказал:

Разве так можно?

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

 

3 минуты назад, uhx сказал:

Почта скрыта для участников форума

О ней никто и не узнает.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 minute ago, uhx said:

Вроде бы без регистрации в дискорд тебя никак не пустит.

 

Пум! Реально можно зайти без регистрации. Пойду таки читать доку, а то сразу это было не очевидно )

 

1 hour ago, partoftheworlD said:

Для новеньких можно генерировать новый логин(временный, не требующий регистрации)

 

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

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
31 минуту назад, srg91 сказал:

можно накидать инфы при коннекте, за пользователя

 

Думаю можно вторым запросом открывать ссылку на приглашение на сервер, типа на первой вкладке будет регистрация, если не зарегистрирован, то ещё открывать вторым окном/запросом ссылку на приглашение на сервер.

Единственное, чтобы сделать проверку, придется на форуме включить привязку логина/почты дискорда. Хотя думаю есть api для проверки состоит ли пользователь на определенном сервере или нет, и по результату открывать окно с приглашением.

 

http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.create_invite

http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.get_invite

http://discordpy.readthedocs.io/en/latest/api.html#discord.Client.accept_invite

 

Пожелание на будущее, если все получиться совместить для админов добавить прикрепление записей (о стримах, важных темах) совместно с форумом как обычно делает Xipho перед стримом, так же в Discord. И конечно же бота, который бы собирал новые темы и отправлял в Discord (типа Пользователь опубликовал запись в блоге, Нововведения и всякое важное что происходит в жизни форума)

 

 

//upd

Проверил в библиотеке для питона есть

 

discord.Client.servers серверы, к которым подключен подключенный клиент.

а вот и прикрутить проверочку с мылами в базе форума.

discord.Client.email Адрес электронной почты, используемый для входа в систему. Устанавливается только в том случае, если вход успешно завершен

 

//upd 2  поковырял ещё апишку

 

есть такой метод позволяющий менять псевдоним пользователя на сервере на любой.

discord.Client.change_nickname

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

и удалять неактивных

discord.Client.estimate_pruned_members(server, *, days)

 

Ссылку оставлю на всякий случай.

http://discordpy.readthedocs.io/en/latest/api.html

2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 hours ago, partoftheworlD said:

Чет разошелся :D

 

Как-то оно так и происходит :D Спасибо большое за содействие!

 

Вроде как да, после аунтификации пользователя кидаем его в сервер с помощью 

PUT /guilds/{guild.id}/members/{user.id}

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

PATCH /guilds/{guild.id}/members/{user.id}

 

Завтра еще поковыряю, но похоже именно авторизация не очень даже сложная.

 

2 hours ago, partoftheworlD said:

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

 

У дискорда есть вебхуки, как раз обеспечивают такую функциональность. Без нее думаю не обойдемся )

 

2 hours ago, partoftheworlD said:

И конечно же бота, который бы собирал новые темы и отправлял в Discord

 

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

 

Опять же я мог где-то ошибиться, но об этом узнаю уже завтра :D

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Похоже, наше решение связать дискорд с форумом таки было правильным )) Это хорошо ) 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Итого, после небольшого погружения в API.

 

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

Мы еще в самом начале пути, самой интеграции с форумом еще нет :)

 

От пользователя нужен минимум прав - форум попросит только данные о аватаре и возможность приглашать вас на сервера.

На сервере будет "сидеть" бот, который после нажатия на волшебную кнопку добавит вас на сервер, выдаст права и сгенерирует инвайт.

 

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

 

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

 

По апи, получилось, что требуется следующее:

  1. (oauth) Запросить у пользователя права на возможность инвайта его на разные сервера. Есть ограничение - приглашать можно только через бота и только на те сервера, где этот бот существует.
  2. (oauth) Посадить бота на сервер и выдать ему нужные гранты. Это ограничение взаимодействия с пользователями - выдавать роли и приглашать на сервер может только бот, поэтому он будет в чате изначально (увы будет слегка не разговорчив :)). Думаю в будущем научим разговаривать и может быть что-нибудь еще )
  3. Для проверки наличия пользователя на сервере используются ручки /users/@me и /guilds/{guild.id}/members/{user.id}  . Правда для этого боту нужны жирнейшие права на MANAGE_GUILD. 
  4. Добавляем пользователя, если его еще не было - PUT /guilds/{guild.id}/members/{user.id} . Волшебная команда, добавляет пользователя на сервер и можем поменять ему ник и роль. Но пользователь ранее должен был подтвердить, что да, он согласен, что мы можем его добавить, плюс бот должен обладать правами CREATE_INSTANT_INVITE и внезапно MANAGE_ROLES которая требует от владельца иметь включенную двуфакторную аунтефикацию ))
  5. Ну и далее просто генерим пользователю инвайт, куда и перенаправляем. Ручка POST /channels/{channel.id}/invites

Вроде с апи дискорта всё просто ) Осталось встроить в форум :D

 

 

 

3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас