minetest-telegram-bridge/chat_mod/init.lua

73 lines
2.2 KiB
Lua

local http_api = minetest.request_http_api()
function tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
function send_messages(res)
for message in string.gmatch(res["data"], "[^\n]+") do
if message == "list" then
local x = minetest.get_connected_players()
local text = "List of Players ("
text = text .. tostring(tablelength(x)) .. "/"
text = text .. tostring(minetest.settings:get("max_users")) .. "):"
for j, i in ipairs(x) do
text = text .. "\n" .. i.get_player_name(i)
end
http_api.fetch_async({url = "http://localhost:" .. port .. "/sendCode",
post_data = {message = text}})
elseif message == "time" then
local x = minetest.get_timeofday()
local text = string.format("%02d:%02d", math.floor(x*24), math.floor((x*24*60) % 60))
http_api.fetch_async({url = "http://localhost:" .. port .. "/sendCode",
post_data = {message = text}})
else
minetest.chat_send_all(message)
end
end
end
function main()
port = minetest.settings:get("chat_server_port")
if port == nil then
port = "9876"
end
http_api.fetch({url = "http://localhost:" .. port .. "/get"}, send_messages)
minetest.after(0.5, main)
end
function dead(player)
http_api.fetch_async({url = "http://localhost:" .. port .. "/sendCode",
post_data = {message = player.get_player_name(player) ..
" died."}})
end
function join(player)
http_api.fetch_async({url = "http://localhost:" .. port .. "/sendCode",
post_data = {message = player.get_player_name(player) ..
" joined the server."}})
end
function left(player)
http_api.fetch_async({url = "http://localhost:" .. port .. "/sendCode",
post_data = {message = player.get_player_name(player) ..
" left the server."}})
end
function chat(name, message)
http_api.fetch_async({url = "http://localhost:" .. port .. "/send",
post_data = {message = "<" .. name .. "> " .. message}})
end
if http_api == nil then
minetest.log("error", "Chat Mod is not in secure.http_mods or secure.trusted_mods. Exiting.")
else
main()
end
minetest.register_on_dieplayer(dead)
minetest.register_on_joinplayer(join)
minetest.register_on_leaveplayer(left)
minetest.register_on_chat_message(chat)