1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
furrybot = rawget(_G, "furrybot") or {}
furrybot.commands = {}
local C = minetest.get_color_escape_sequence
local http = minetest.get_http_api()
function furrybot.send(msg, color)
minetest.send_chat_message("/me " .. C("#00FF3C") .. "[" .. C(color or "#FFFA00") .. msg .. C("#00FF3C") .. "]")
end
function furrybot.ping(player)
return C("#00DCFF") .. "@" .. player .. C("#FFFA00")
end
function furrybot.ping_player(player, message)
furrybot.send(furrybot.ping(player) .. ": " .. message)
end
function furrybot.ping_player_error(player, err, detail)
furrybot.ping_player(player, C("#D70029") .. " " .. err .. " " .. (detail and C("#FF6683") .. "'" .. detail .. "'" .. C("#D70029") or "") .. ".")
end
function furrybot.player_online(name)
for _, n in ipairs(minetest.get_player_names()) do
if name == n then
return true
end
end
end
function furrybot.check_online(name, target)
if name == target then
ping_player_error(name, "You need to specify another player")
elseif player_online(target) then
return true
else
ping_player_error(name, "Player not online", target)
end
end
function furrybot.recieve(msg)
msg = minetest.strip_colors(msg)
if msg:find("<") == 1 then
local idx = msg:find(">")
local player = msg:sub(2, idx - 1)
local message = msg:sub(idx + 3, #msg)
if message:find("!") == 1 then
local args = message:sub(2, #message):split(" ")
local cmd = table.remove(args, 1)
local func = furrybot.commands[cmd]
if func then
func(player, unpack(args))
else
furrybot.ping_player_error(player, "Invalid command", cmd)
end
end
end
end
function furrybot.commands.furhug(name, target)
if furrybot.check_online(name, target) then
furrybot.send(name .. " hugs " .. target .. ".")
end
end
furrybot.commands.furcuddle = furrybot.commands.furhug
function furrybot.commands.furkiss(name, target)
if furrybot.check_online(name, target) then
furrybot.send(name .. " kisses " .. target .. ".")
end
end
furrybot.target_list = {}
function furrybot.commands.furbang(name, target)
if furrybot.check_online(name, target) then
furrybot.target_list[target] = function()
furrybot.send(ping(name) .. " and " .. ping(target) .. " are having sex! OwO")
end,
furrybot.ping_player(target, name .. " wants to have sex with you. Type !accept to accept or !deny to deny.")
end
end
furrybot.commands.fursex = furrybot.commands.furbang
furrybot.commands.furfuck = furrybot.commands.furbang
function furrybot.commands.accept(name)
local func = furrybot.target_list[name]
if func then
func()
else
furrybot.ping_player_error(name, "Nothing to accept")
end
end
function furrybot.commands.deny(name)
if furrybot.target_list[name] then
furrybot.target_list[name] = nil
furrybot.ping_player(name, "Denied request")
else
furrybot.ping_player_error(name, "Nothing to deny")
end
end
function furrybot.commands.furhit(name, target)
if furrybot.check_online(name, target) then
furrybot.send(name .. " hits " .. target)
end
end
furrybot.commands.furslap = furrybot.commands.furhit
function furrybot.commands.help()
local keys = {}
for k in pairs(furrybot.commands) do
table.insert(keys, k)
end
furrybot.send("Available commands: " .. table.concat(keys, ", "))
end
function furrybot.commands.verse(name)
local req = {
--url = "https://labs.bible.org/api/?type=json&passage=random",
url = "localhost",
}
local res = http.fetch_sync(req)
if res.succeeded then
--local data = minetest.parse_json(res.data)[1]
--furrybot.send(data.text .. C("#00FFC3") .. "[" .. data.bookname .. " " .. data.chapter .. "," .. data.verse .. "]")
furrybot.send(res.data)
else
furrybot.ping_player_error(name, "Request failed with code", res.code)
end
end
function furrybot.reload()
local f = loadfile(minetest.get_modpath("furrybot") .. "/init.lua")
setfenv(f, _G)
f()
end
if not furrybot.loaded then
minetest.register_on_receiving_chat_message(function(msg)
furrybot.recieve(msg)
end)
minetest.register_chatcommand("furrybot-reload", {
func = function()
furrybot.reload()
end
})
else
furrybot.send("Reloaded")
end
furrybot.loaded = true
|