Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- local event = require("event")
- local computer = require("computer")
- local internet = require("internet")
- -- Путь к файлу логов
- local LOG_FILE = "/home/discord_relay.log"
- -- Функция логирования
- local function log(message)
- local file = io.open(LOG_FILE, "a")
- if file then
- file:write(os.date("%Y-%m-%d %H:%M:%S") .. ": " .. tostring(message) .. "\n")
- file:close()
- end
- print(message)
- end
- -- Проверка наличия интернет-карты
- if not component.isAvailable("internet") then
- log("Ошибка: Интернет-карта не найдена!")
- return
- end
- -- Функция для чтения вебхука из пастебина
- local function getWebhookFromPastebin(pastebinUrl)
- local success, content = pcall(function()
- local http = internet.request(pastebinUrl) -- Отправляем запрос к пастебину
- local data = ""
- for chunk in http do -- Читаем ответ
- data = data .. chunk
- end
- return data
- end)
- if not success then
- log("Ошибка при получении вебхука из Pastebin: " .. tostring(content))
- return nil
- end
- return content
- end
- -- Замените на URL вашего пастебина
- local pastebinUrl = "https://pastebin.com/raw/5YGGcMi2" -- Ваш новый пастебин с вебхуком
- local DISCORD_WEBHOOK = getWebhookFromPastebin(pastebinUrl)
- if not DISCORD_WEBHOOK then
- log("Ошибка: Не удалось получить вебхук из Pastebin")
- return
- end
- log("Webhook получен: " .. DISCORD_WEBHOOK)
- -- Функция для кодирования JSON
- local function encodeJSON(data)
- if type(data) == "string" then
- return '"' .. data:gsub('"', '\\"'):gsub("\n", "\\n") .. '"'
- elseif type(data) == "number" or type(data) == "boolean" then
- return tostring(data)
- elseif type(data) == "table" then
- local result = "{"
- for k, v in pairs(data) do
- result = result .. '"' .. tostring(k) .. '":' .. encodeJSON(v) .. ","
- end
- result = result:sub(1, -2) .. "}"
- return result
- end
- return "null"
- end
- -- Функция для отправки сообщения в Discord
- local function sendToDiscord(username, message)
- if not username or not message then
- log("Ошибка: Пустое имя пользователя или сообщение")
- return
- end
- local payload = {content = string.format("**%s**: %s", username, message)}
- local jsonPayload = encodeJSON(payload)
- log("JSON Payload: " .. jsonPayload)
- -- Логируем вебхук
- log("Отправляем запрос с вебхуком: " .. DISCORD_WEBHOOK)
- -- Отправка запроса
- local success, response = pcall(function()
- local connection = internet.request(DISCORD_WEBHOOK, jsonPayload, {["Content-Type"] = "application/json"})
- local data = ""
- for chunk in connection do
- data = data .. chunk
- end
- return data
- end)
- if success then
- log("Сообщение отправлено в Discord")
- else
- log("Не удалось отправить сообщение: " .. tostring(response))
- end
- end
- -- Обработчик события чата
- local function onChatMessage(_, _, username, message)
- log(string.format("Получено сообщение от %s: %s", username, message))
- sendToDiscord(username, message)
- end
- -- Регистрация обработчика события
- event.listen("chat_message", onChatMessage)
- log("Discord Chat Relay запущен. Сообщения будут пересылаться в Discord.")
- -- Основной цикл
- while true do
- event.pull("chat_message")
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement