KOTOFF.NET
  • Главная
  • Пользователи
  • Контакты
  • Статистика
  • Правила
  • О нас
  • Вход / Регистрация

Создаём Discord-бота на PHP

Статьи / PHP

Давно хотел написать статью про дискорд-ботов, но всё никак не мог определиться с конкретной тематикой, ведь подобных туториалов и уроков в интернете полно, и в основном для этих целей используют Python и Node.JS. А вот какой-либо документации и примеров написания ботов для дискорда на PHP почти нет, и уж тем более на русском языке. Поэтому в этой статье будем разбирать основы написания ботов на библиотеке Discord-PHP.


Шаг 1: Подготовка бота

1. Переходим по ссылке и создаём новое приложение:

2. Во вкладке Bot добавляем бота, подтверждаем выбор в появившемся окне:

3. Во вкладке OAuth2 -> URL Generator ставим галочку напротив пункта bot, ниже выбираем необходимые права доступа и копируем появившуюся внизу ссылку на инвайт бота:

4. Переходим по скопированной ссылке и приглашаем бота в нужный нам сервер.

5. Генерируем токен бота и сохраняем его у себя:

6. Включаем SERVER MEMBERS INTENT, дабы отслеживать события пользователей (например, вход на сервер):


Шаг 2: Скрипт

Подключаем библиотеку через composer:

composer require team-reflex/discord-php

В этот раз много всего делать не будем, разберём только базовые вещи. В будущих уроках, возможно, напишем ещё что-нибудь. А, возможно, и сделаем бота на питоне. Впрочем, пока загадывать не буду.

Начинаем с подключения библиотеки, импортируем необходимые для работы классы:

<?php

require __DIR__ . '/vendor/autoload.php';


use Discord\Discord;
use Discord\WebSockets\Event;
use Discord\WebSockets\Intents;
use Discord\Parts\User\Member;
use Discord\Parts\Channel\Message;

Создаём экземпляр класса Discord:

$ds = new Discord( [
    'token' => '*****************', // Токен, который мы сгенерировали ранее
    'intents' => Intents::getDefaultIntents() | Intents::GUILD_MEMBERS, // Понадобится для отслеживания событий участников
] );

Далее вставляем конструкцию, внутри которой будем прописывать конкретные события для отслеживания. В конец сразу добавил $ds->run() для запуска бота:

$ds->on( 'ready', function( $ds )
{

    // Тут продолжим писать код

} );


$ds->run();

И первое событие, которое мы обработаем - так это входящие сообщения:

$ds->on( Event::MESSAGE_CREATE, function( Message $msg, Discord $ds )
{

    // Тут будем обрабатывать входящие

} );

Добавим тестовую команду:

if ( $msg->content == '/бот' )
{
    $msg->reply( 'Привет, ' . $msg->author->username );
}

Да, бот пока не запущен и не готов к работе, но я забегу наперёд и покажу, как это будет работать:

С помощью метода ban() можно заблокировать участника. В первом параметре можно указать, за какой промежуток времени нужно удалить сообщения этого пользователя (я для примера удалю сообщения за последние сутки), а во втором - причину бана:

else if ( str_contains( $msg->content, 'админ лох' ) )
{
    $msg->member->ban( 1, 'reason' );
}

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


В первом шаге мы включили Members Intent, поэтому теперь можем отслеживать вход новых участников на наш сервер:

$ds->on( Event::GUILD_MEMBER_ADD, function( Member $member, Discord $ds )
{

    // Тут продолжим писать код

} );

Давайте выдадим новым участникам какую-нибудь роль, а для этого нам понадобится получить ID этой самой роли. Чтобы его получить - включаем режим разработчика (Настройки -> Настройки приложения -> Расширенное):

Ну, и теперь копируем ID нужной роли:

Теперь мы можем воспользоваться методом addRole(), передав в него скопированный айдишник (в виде строки):

$member->addRole( '1007995229674156102' );

Ну, и ещё поменяем никнейм присоединившегося участника на сервере методом setNickname():

$member->setNickname( 'Новый никнейм' );


Весь код:

<?php

require __DIR__ . '/vendor/autoload.php';


use Discord\Discord;
use Discord\WebSockets\Event;
use Discord\WebSockets\Intents;
use Discord\Parts\User\Member;
use Discord\Parts\Channel\Message;




$ds = new Discord( [
    'token' => '******************',
    'intents' => Intents::getDefaultIntents() | Intents::GUILD_MEMBERS,
] );



$ds->on( 'ready', function( $ds )
{


    $ds->on( Event::MESSAGE_CREATE, function( Message $msg, Discord $ds )
    {

        if ( $msg->content == '/бот' )
        {
            $msg->reply( 'Привет, ' . $msg->author->username );
        }

        else if ( str_contains( $msg->content, 'админ лох' ) )
        {
            $msg->member->ban( 1, 'reason' );
        }

    } );

    $ds->on( Event::GUILD_MEMBER_ADD, function( Member $member, Discord $ds )
    {

        $member->addRole( '1007995229674156102' );
        $member->setNickname( 'Новый никнейм' );

    } );


} );


$ds->run();


Шаг 3: Запуск бота

Запустить бота можно на OpenServer. Для этого нужно перейти в консоль:

И ввести следующую команду (путь, естественно, указывать нужно свой):

php "D:\DiscordBOT\bot.php"


Если же у вас есть купленный хост, который предоставляет возможность юзать консоль, то запустить бота можно там. Покажу на примере ISPManager принцип:

1. Переходим во вкладку Shell-клиент:

2. Вводим следующую команду:

/opt/php/8.1/bin/php www/site.ru/bot.php

Путь и версию PHP меняем под себя.

Чтобы быстро вставить команду в консоли - нажмите ПКМ -> Paste from browser:


На этом всё!

  • 5id15
  • 13.08.2022
  • 5 872
  • 0
Python и LongPoll VK, или как запустить скрипт ВК и настроить Python, для новичков
Python и LongPoll VK, или как запустить скрипт ВК и настроить Python, для новичков
29-06-2019, 08:34, Статьи / Python
[Часть 1] Написание своего сайта. Регистрация и Авторизация
[Часть 1] Написание своего сайта. Регистрация и Авторизация
21-07-2019, 19:03, Статьи / PHP
Авторизация на сайте через ВК с занесением пользователя в базу данных (PHP)
Авторизация на сайте через ВК с занесением пользователя в базу данных (PHP)
27-06-2022, 18:21, PHP
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1
Простой игровой бот для ВК, создаем игру для Вконтакте + исходники! | Часть 1
19-04-2020, 22:05, PHP
Создаем собственного бота VK, подробная инструкция как создать бота VK за 5 минут!
Создаем собственного бота VK, подробная инструкция как создать бота VK за 5 минут!
16-01-2019, 06:02, Статьи / PHP
Movie

Нет комментариев. Не желаешь оставить первый комментарий?

Перед публикацией, советую ознакомится с правилами!

{login}

Твой комментарий..

Заказывай!
Разработка ботов на заказ, любой сложности, обращаться:
 VK KOTOFF.net - Сообщество, в личные сообщения или по контактам указанным там 
 mail: [email protected]

Рекламный блок
  • Новости
  • Платная категория
  • Блог
  • Игры
  • Обновления
  • Программы
  • Статьи
    • PHP
    • Python
    • JS
  • Дизайн
    • PSD исходники
  • DLE
    • Шаблоны
    • Модули
    • Хаки
  • Магазин
    • Скрипты
Комментарии
Система комментариев на PHP
Полезная статья
Создание простого Telegram-бота с клавиатурой и inline-кнопками [Часть 2]
Класс, хорошая тема
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Как отключить вывод результата cron в папку modules/cron в Open Server? Крон запускает несколько
Динамическая обложка для группы ВК, последний подписчик, топ комментатор и прочее
Планируете ли вернуться к динамической обложке?
Скрипт для скачивания видео с YouTube на PHP
Уже не работает.
Все комментарии..
Полный список последних комментариев
Лучшие новости
Всего публикаций: 115
Добавлено за сутки: +0
Записей в блоге: 1
Добавлено за сутки: +0
Комментариев: 936
Добавлено за сутки: +0
Пользователей: 4124
Добавлено за сутки: +0
Полная статистика..
Подробная статистика сайта
Loading...

Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter

Полезные ссылки
  • О проекте
  • Наши контакты
  • Администрация
  • Рекламные материалы
  • Идеи и предложения
  • Ответы на вопросы
Информация
  • Условия сделки
  • Способы оплаты
  • Поддержка / F.A.Q
  • Онлайн документация
  • Статистика сайта
  • Список пользователей
Услуги/Работа
  • Разработка ботов ВК
  • Обновление проекта
  • Консультация/поддержка
KOTOFF.net

Copyright © Footer 2019-2023. All right reserved.
KOTOFF.net - Уроки по PHP, SQL, IT новости
Быстрый вход

Используйте социальные сети для быстрой регистрации и авторизации.

Google
ВКонтакте
Яндекс
Mail.ru
Создать аккаунт / Регистрация
Авторизация

Я забыл свой пароль