]> git.lizzy.rs Git - mt_biblebot.git/blob - init.lua
No more anonymus /verse
[mt_biblebot.git] / init.lua
1 --[[
2 Random_messages mod by arsdragonfly.
3 arsdragonfly@gmail.com
4 6/19/2013
5 Re-writted by: maikerumine 20170710
6 --]]
7 --Time between two subsequent verses.
8 local VERSE_INTERVAL = 0
9 -- Added default verses file
10 local default_verses_file = "mt_biblebot"
11
12 math.randomseed(os.time())
13
14 mt_biblebot = {}
15 mt_biblebot.verses = {} --This table contains all verses.
16
17 function table.count( t )
18         local i = 0
19         for k in pairs( t ) do i = i + 1 end
20         return i
21 end
22
23 function table.random( t )
24         local rk = math.random( 1, table.count( t ) )
25         local i = 1
26         for k, v in pairs( t ) do
27                 if ( i == rk ) then return v, k end
28                 i = i + 1
29         end
30 end
31 --[[
32 function mt_biblebot.initialize() --Set the interval in minetest.conf.
33         minetest.settings:set("mt_biblebot_interval",180)
34         minetest.settings:save();
35         return 180
36 end
37
38 function mt_biblebot.set_interval() --Read the interval from minetest.conf(set it if it doesn'st exist)
39         VERSE_INTERVAL = tonumber(minetest.settings:get("mt_biblebot_interval")) or mt_biblebot.initialize()
40 end
41 ]]
42 function mt_biblebot.check_params(name,func,params)
43         local stat,vrs = func(params)
44         if not stat then
45                 minetest.chat_send_player(name,vrs)
46                 return false
47         end
48         return true
49 end
50
51 function mt_biblebot.read_verses()
52         local line_number = 1
53         -- define input 
54         local input = io.open(minetest.get_worldpath().."/mt_biblebot","r")
55         -- no input file found
56         if not input then
57                 -- look for default file
58         local default_input = io.open(minetest.get_modpath("mt_biblebot").."/"..default_verses_file,"r")
59                 local output = io.open(minetest.get_worldpath().."/mt_biblebot","w")
60                 if not default_input then
61                         -- blame the admin if not found
62                         output:write("Blame the server admin! He/She has probably not edited the random verses yet.\n")
63                         output:write("Tell your dumb admin that this line is in (worldpath)/mt_biblebot \n")
64                 else
65                         -- or write default_input content in worldpath message file
66                         local content = default_input:read("*all")
67                         output:write(content)
68                 end
69                 io.close(output)
70                 io.close(default_input)
71                 input = io.open(minetest.get_worldpath().."/mt_biblebot","r")
72         end
73         -- we should have input by now, so lets read it
74         for line in input:lines() do
75                 mt_biblebot.verses[line_number] = line
76                 line_number = line_number + 1
77         end
78         io.close(input)
79 end
80 --[[
81 function mt_biblebot.display_verse(verse_number)
82         local vrs = mt_biblebot.verses[verse_number] or verse_number
83         if vrs then
84                 minetest.chat_send_all(vrs)
85         end
86 end
87
88 function mt_biblebot.show_verse()
89         mt_biblebot.display_message(table.random(mt_biblebot.verses))
90 end
91 ]]
92
93 --=======
94 --BEERHOLDER CODE HERE
95 function mt_biblebot.display_verse(verse_number)
96         local vrs = mt_biblebot.verses[verse_number] or verse_number
97         if vrs then
98 --              minetest.chat_send_all(vrs)
99                 for _,player in ipairs(minetest.get_connected_players()) do
100                         local target = player:get_player_name()
101                                         minetest.chat_send_player(target, string.char(0x1b).."(c@#00ff00)"..
102                                                                                                           string.format("[%s] %s", "Biblebot", vrs))    
103                 end
104         end
105 end
106
107 function mt_biblebot.show_verse()
108         local vrs = string.char(0x1b).."(c@#00ff00)"..table.random(mt_biblebot.verses)
109         mt_biblebot.display_verse(vrs)
110 end
111 --=======
112
113 function mt_biblebot.list_verses()
114         local str = ""
115         for k,v in pairs(mt_biblebot.verses) do
116                 str = str .. k .. " | " .. v .. "\n"
117         end
118         return str
119 end
120 --[[
121 function mt_biblebot.remove_verse(k)
122         table.remove(mt_biblebot.verses,k)
123         mt_biblebot.save_verses()
124 end
125
126 function mt_biblebot.add_verse(t)
127         table.insert(mt_biblebot.verses,table.concat(t," ",2))
128         mt_biblebot.save_verses()
129 end
130
131 function mt_biblebot.save_verses()
132                 local output = io.open(minetest.get_worldpath().."/mt_biblebot","w")
133                 for k,v in pairs(mt_biblebot.verses) do
134                         output:write(v .. "\n")
135                 end
136                 io.close(output)
137 end
138 ]]
139 --When server starts:
140 --mt_biblebot.set_interval()
141 mt_biblebot.read_verses()
142 --[[
143 local TIMER = 0
144 minetest.register_globalstep(function(dtime)
145         TIMER = TIMER + dtime;
146         if TIMER > MESSAGE_INTERVAL then
147                 mt_biblebot.show_verse()
148                 TIMER = 0
149         end
150 end)
151 ]]
152
153 --[[
154 local register_chatcommand_table = {
155         params = "viewverses | removemverse <number> | addverse <number>",
156         privs = {server = true},
157         description = "View and/or alter the server's random verses",
158         func = function(name,param)
159                 local t = string.split(param, " ")
160                 if t[1] == "viewverses" then
161                         minetest.chat_send_player(name,mt_biblebot.list_verses())
162                 elseif t[1] == "removeverse" then
163                         if not mt_biblebot.check_params(
164                         name,
165                         function (params)
166                                 if not tonumber(params[2]) or
167                                 mt_biblebot.verses[tonumber(params[2])] == nil then
168                                         return false,"ERROR: No such verse."
169                                 end
170                                 return true
171                         end,
172                         t) then return end
173                         mt_biblebot.remove_verse(t[2])
174                 elseif t[1] == "addverse" then
175                         if not t[2] then
176                                 minetest.chat_send_player(name,"ERROR: No verse.")
177                         else
178                                 mt_biblebot.add_verse(t)
179                         end
180                 else
181                                 minetest.chat_send_player(name,"ERROR: Invalid command.")
182                 end
183         end
184 }
185
186 ]]
187 --BEERHOLDER CODE HERE
188 local register_show_verse = {
189         params = "",
190         description = "Say a random verse",
191         func = function(name, param)
192                 minetest.chat_send_all("/verse by " .. name)
193                 mt_biblebot.show_verse()
194         end
195 }
196
197 --minetest.register_chatcommand("mt_biblebot", register_chatcommand_table)
198 --minetest.register_chatcommand("rverses", register_chatcommand_table)
199 --BEERHOLDER CODE HERE
200 minetest.register_chatcommand("verse", register_show_verse)