В связи событиями связанными с 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, который будет содержать все необходимые данные о последнем сообщении.
