Advertisement
crococrystal

communication.lua

Jun 19th, 2024 (edited)
447
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.86 KB | None | 0 0
  1. local internet = require("internet")
  2. local json = require("dkjson")
  3. local ChatBox = require("lib.chatbox")
  4. local Utils = require("lib.utils")
  5. local Telegram = {}
  6. local token = "6139557335:AAEGhQbr1FMaGoQbOZ4X5vBYZhzFJz3rFo0"
  7. local api_url = "https://api.telegram.org/bot" .. token .. "/"
  8. local lastUpdateId = 0
  9.  
  10. local players = {
  11.     ["186238587"] = "§8[§3Помощница§8] §4❤ §bМикаса§7:§f ",
  12.     ["5794434647"] = "§8[§4Сrystal-OS§8] §8Robot§f: ",
  13. }
  14.  
  15. local chat_ids = {"186238587", "5794434647"}
  16.  
  17. function Telegram.sendMessage(chat_id, text)
  18.     local url = api_url .. "sendMessage"
  19.     local data = "chat_id=" .. tostring(chat_id) .. "&text=" .. text
  20.     local response = internet.request(url, data)
  21.     local result = ""
  22.     for chunk in response do
  23.         result = result .. chunk
  24.     end
  25.     return json.decode(result)
  26. end
  27.  
  28. function Telegram.sendToAllUsers(text, exclude_id)
  29.     for _, chat_id in ipairs(chat_ids) do
  30.         if chat_id ~= exclude_id then
  31.             Telegram.sendMessage(chat_id, text)
  32.             os.sleep(1) -- Задержка для каждого пользователя
  33.         end
  34.     end
  35. end
  36.  
  37. function Telegram.cleanMessage(nick, msg)
  38.     -- Убираем цветовые коды
  39.     nick = nick:gsub("§.", "")
  40.     -- Убираем лишние символы скобок и двоеточий
  41.     nick = nick:gsub("^%[", "")
  42.     nick = nick:gsub("%]$", "")
  43.     -- Убираем лишний символ "]:" в конце
  44.     msg = msg:gsub("^%]: ", "")
  45.     local time = "[" .. Utils.real_time() .. "]"
  46.     return time .. " [" .. nick .. "]: " .. msg
  47. end
  48.  
  49. function Telegram.parserTG()
  50.     local url = api_url .. "getUpdates?offset=" .. (lastUpdateId + 1)
  51.     local req = internet.request(url)
  52.     for line in req do
  53.         local Message = json.decode(line)
  54.         if Message and Message.result and #Message.result > 0 then
  55.             for _, result in ipairs(Message.result) do
  56.                 local updateId = result.update_id
  57.                 local sender_id = tostring(result.message.from.id)
  58.                 if players[sender_id] then
  59.                     local text = result.message.text
  60.                     local nick = players[sender_id]
  61.                     local formatted_msg = "🌎" .. Telegram.cleanMessage(nick, text)
  62.                     lastUpdateId = updateId
  63.                     os.sleep(1) -- Задержка для каждого пользователя
  64.  
  65.                     -- Отправка сообщения другим пользователям Telegram
  66.                     Telegram.sendToAllUsers(formatted_msg, sender_id)
  67.  
  68.                     -- Отображение сообщения в игре
  69.                     local Display = require("lib.display")
  70.                     Display.display_message_on_monitor(nick, text)
  71.  
  72.                     -- Отправка сообщения в игровой чат
  73.                     ChatBox.sendMessage(nick, text)
  74.                 end
  75.             end
  76.         end
  77.     end
  78. end
  79.  
  80. function Telegram.display_message_on_monitor(nick, msg, sender_id)
  81.     local Display = require("lib.display")
  82.     Display.display_message_on_monitor(nick, msg)
  83.     -- Отправка сообщений из игры с пометкой 🏠 только другим пользователям
  84.     local formatted_msg = "🏠" .. Telegram.cleanMessage(nick, msg)
  85.     Telegram.sendToAllUsers(formatted_msg, sender_id)
  86. end
  87.  
  88. function Telegram.handle_telegram_messages()
  89.     while true do
  90.         local success, err = pcall(Telegram.parserTG)
  91.         if not success then
  92.             print("Ошибка при обработке сообщений Telegram: ", err)
  93.             os.sleep(5)
  94.         else
  95.             os.sleep(5) -- Задержка между проверками сообщений
  96.         end
  97.     end
  98. end
  99.  
  100. return Telegram
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement