Discord Bot written in php, which uses the REST API and WebSocket to schedule events to the Guild channel.
Discord Bot написанный на php
, который по средствам REST API и WebSocket
ведёт расписание событий в канале гильдии. Участники в канале гильдии отправляют ему сообщения в определённом формате или ставят реакции, он их обрабатывает и удаляет. Из обработанных сообщений формируется расписание, которое отображается в виде сводного сообщения в этом же канале. Закреплённые сообщения он не обрабатывает и не удаляет, в них можно написать инструкции для пользователей. В первую очередь скрипт предназначен для использования в планировщике cron
на php
хостинге.
Чтобы создать, записаться или выписаться из события необходимо в канале, который контролирует бот, написать сообщение в следующем формате:
<action> <role> [<record>] <date> <time> <raid> [<user>] <addition> <comment>
<description>
<action>
- Действие, которое нужно выполнить.<role>
- Роль участника события.<record>
- Номер события в канале, например: 002.<date>
- Дата события, например: 20.02.2020, завтра, вторник.<time>
- Время события, например: 18:00.<raid>
- Идентификатор события, например: vHRC.<user>
- Для записи других участников, в формате @id<addition>
- Дополнительная опция.<comment>
- Комментарий к событию.<description>
- Описание события.Чтобы пользователи могли создавать события, а не только записываться в имеющиеся, у них в этом канале (или у их роли) должно быть право Прикреплять файлы.
Чтобы пользователи могли записывать других участников, у них в этом канале (или у их роли) должно быть право Встраивать ссылки.
После публикации на php
хостинге и заполнения в файле php/api.php
значения MY-APP-TOKEN
и в файле base/<game>/session.db
значений MY-DISCORD-BOT-ID
, MY-DISCORD-BOT-TOKEN
и перейдите в браузере или в планировщике cron
по следующему адресу:
php/api.php?method=<method>&game=<game>&token=<token>[&format=<format>][... ¶m=<param>]
<method>
- Имя метода, который нужно выполнить.<token>
- Заданный вами MY-APP-TOKEN
.<game>
- Идентификатор поддерживаемой игры.<format>
- Формат результата работы, поддерживается json
, xml
и http
.<param>
- Параметры для метода.discord.connect
- Выполнить подключение по WebSocket
и в синхронном режиме обрабатывать все поступающие сообщения в контролируемых каналах всех гильдий.discord.guild
- Выполнить подключение по REST API
и разово обработать все каналы в гильдий.
<guild>
- Цифровой идентификатор гильдии в Discord.discord.channel
- Выполнить подключение по REST API
и разово обработать все сообщения в канале.
<guild>
- Цифровой идентификатор гильдии в Discord.<channel>
- Цифровой идентификатор канала гильдии.discord.message
- Выполнить подключение по REST API
и разово обработать сообщение в канале.
<guild>
- Цифровой идентификатор гильдии в Discord.<user>
- Цифровой идентификатор пользователя в Discord.<channel>
- Цифровой идентификатор канала гильдии или пользователя.<message>
- Цифровой идентификатор сообщения в канале.discord.reaction
- Выполнить подключение по REST API
и разово обработать реакцию в сообщении.
<guild>
- Цифровой идентификатор гильдии в Discord.<user>
- Цифровой идентификатор пользователя в Discord.<channel>
- Цифровой идентификатор канала гильдии или пользователя.<message>
- Цифровой идентификатор сообщения в канале.<reaction>
- Составной идентификатор реакции в сообщении.event.link
- Генерирует ссылку на картинку события или на создание записи в календаре.
<event>
- Внутренний идентификатор события в приложении.<raid>
- Внутренний идентификатор рейда в приложении.php
. Для полноценной работы, по мимо вышеупомянутого набора функций webSocketClient-1.0.inc.php
, требуется библиотека phpEasy-0.3.inc.php
, класс File-0.1.inc.php
и подкласс FileStorage-0.5.inc.php
. К сожалению, я сейчас не готов опубликовать эти наработки в открытый доступ. Поэтому, к сожалению, у вас не получиться запустить бота на вашем php
хостинге, т.к. в данном репозитории отсутствуют вышеупомянутые библиотеки и классы. Но вы можете посмотреть его работу в этой демонстрационной гильдии.