Создание Дискорд Ботов на Lua. Урок №3 - Обработка сообщений, аргументы.

Добро пожаловать!

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

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
lua / python developer
Редактор
Регистрация
13 Июн 2022
Сообщения
72
Всех приветствую на уроке №3. В данном уроке мы будем разбирать, как работать с сообщениями от пользователей, и как выделять из них аргументы.


1. Для начала - запустим нашего бота.
Зайдем в папку, где находится наш бот(в прошлых уроках создавали), затем нажмём запустим консоль CMD(также показано в предыдущих уроках).

Введём команду:

Lua:
luvit *название файла без расширения*

Пример: Если название файла с ботом "bot.lua" >> luvit bot

Отлично, наш бот успешно запущен!
1679069604611.png

2. В обработчике события "messageCreate" создадим 3 переменных.
Переменная 'memberName' будет получать "Username"(ник) пользователя, отправившего сообщение.
Переменная 'memberId' будет получать "UserID"(id) пользователя, отправившего сообщение.
Переменная 'content' будет получать "Message.text"(сообщение) от пользователя.
1679069960323.png Примерно вот так должен выглядеть наш код в событии "messageCreate"
Lua:
local memberName = message.member.username
local memberId = message.member.id
local content = message.content

3. Попробуем вывести эти переменные.
Сделаем проверку на команду(сообщение) "!pawno-help", которая будет выводить нам наш UserName и UserId.
Добавляем в событие "messageCreate" нашу проверку и вывод.
Lua:
if content == '!pawno-help' then -- Проверка на команду
    message:reply('UserName - '..memberName..' | UserID - '..memberId) -- Вывод сообщений
end -- Закрываем проверку

Проводим процедуру по перезагрузке бота(в cmd консоль команду luvit *файл)

Получаем:
1679070239711.png

Как мы можем увидеть - наш бот вывел всё верно!

4. Попробуем отлавливать наш аргумент.

Для этого в Lua существует две функции. 'sub' и 'match'
Также мы будем использовать функцию lower()
string.sub
- возвращает подстроку строки, которая начинается с символа с индексом i и продолжается до символа с индексом j; i и j могут быть отрицательными.
string.match - поиск первого вхождения шаблона в строку. Возвращает захваченные значения. Для поиска можно использовать регулярные выражения.
string.lower - переводит текст в нижний регистр(not capslock)

Давайте напишем команду '!arg', которая будет нам выводить аргумент после команды.
1679070962218.png

Lua:
if content:sub(1, #'!arg'):lower() == '!arg' then -- Делаем проверку на команду, используя методы Sub и Lower
    local arg = content:match('!arg (.*)') -- Регистрируем переменную arg, и записываем в неё аргумент. "!arg (.*)" - означает, что мы ищем любые символы после команды
    if arg ~= nil then -- Делаем проверку на то, что переменная не равна неопределённому значению
        message:reply('Ваш аргумент = '..arg) -- Если ввели аргумент - выведет его
    else -- Если переменная arg равна неопределенному значению(пустому, nil)
        message:reply('Вы не ввели аргумент!') -- Выводим сообщение об ошибки
    end -- Закрываем проверку
end -- Закрываем проверку

Давайте проверим команду, но для начала перезапустите бота.
1679071169851.png

В первый раз я написал пустой аргумент, поэтому он его не вывел.
 
Сверху