В связи событиями связанными с Discord пришлось переделывать модуль сообщений наружу. Как более «надёжный» сервис взяли мессенджер Telegram.
Расписывать как создавалось решение здесь не буду (это я описал на профильном форуме), а сразу приведу модуль и его использование. Естественно что всё делается в ServerScriptService.
В модуле есть ссылка вдохновения где расписано как создать группу и подключить к ней нашего «бота».
-- Источники вдохновения -- https://progclub.ru/resheniya/1s-bitriks/publikatsiya-zapisey-s-sayta-v-telegram-kanal/ -- https://core.telegram.org/bots/api#sendmessage local HTTP = game:GetService("HttpService") local TELEGRAM_API_KEY = '11111111111:AAAAAAAAAAAAAAAAAAAAAAAAAAAA' local TELEGRAM_CHAT_ID = '@чат_ид' local module = {} -- локальная функция отвечающая за отправку сообщения local function request(toServer) local url = 'https://api.telegram.org/bot' .. TELEGRAM_API_KEY .. '/sendMessage' -- отправка запроса на сервер --print(HTTP:JSONEncode(toServer)) local response = HTTP:RequestAsync( { Url = url, -- Сайт для запроса Method = "POST", Body = HTTP:JSONEncode(toServer), Headers = { ["Content-Type"] = "application/json" -- Для отправки в формате JSON } } ) -- Проверка возвращённой таблицы if response.Success then return response.Body else warn("The request failed:", response.StatusCode, response.StatusMessage) warn(response.Body) return response.StatusMessage end end -- внешняя функция для отправки сообщения function module:Send(player, txt) local res = nil -- возвращаемое значение (nil в случае провала) -- подготовка команды для сервера local toServer = {} toServer.chat_id = TELEGRAM_CHAT_ID toServer.text = player.DisplayName .. "|" .. player.Name .. "|" .. player.UserId .. "|" .. txt -- отправка на сервер и получение ответа local success, message = pcall(request, toServer) if not success then warn("==============================") warn("Http Request failed:") warn(message) warn("==============================") else if message == "Forbidden" then warn("!!! САЙТ НЕ ДОСТУПЕН !!!") return nil end local data = HTTP:JSONDecode(message) if data.message == "success" then --- обработка декодированного ответа сервера res = data end end return res end return module
И собственно пример вызова данного модуля из скрипта:
local Player = game:GetService("Players") local SSS = game:GetService("ServerScriptService") local telegram = require(SSS:WaitForChild("Telegram")) function onPlayer(player) telegram:Send(player, "Вошёл в игру") end function offPlayer(player) telegram:Send(player, "Вышёл из игры") end Player.PlayerAdded:Connect(onPlayer) Player.PlayerRemoving:Connect(offPlayer)
Ну и конечно — полученный результат в телеге:
Как получить ID чата?
- Добавьте его в свой список контактов. Проще всего это сделать пройдя по ссылке вида
t.me/botname
- Отправьте ему любое сообщение
- Через браузер открывайте ссылку
https://api.telegram.org/bot%TOKEN%/getUpdates
заменив%TOKEN%
на строку, которую вам выдал BotFather ранее
Вы увидите JSON, который будет содержать все необходимые данные о последнем сообщении.