2 Random_messages mod by arsdragonfly.
5 Re-writted by: maikerumine 20170710
7 --Time between two subsequent verses.
8 local VERSE_INTERVAL = 0
9 -- Added default verses file
10 local default_verses_file = "mt_biblebot"
12 math.randomseed(os.time())
15 mt_biblebot.verses = {} --This table contains all verses.
17 function table.count( t )
19 for k in pairs( t ) do i = i + 1 end
23 function table.random( t )
24 local rk = math.random( 1, table.count( t ) )
26 for k, v in pairs( t ) do
27 if ( i == rk ) then return v, k end
32 function mt_biblebot.initialize() --Set the interval in minetest.conf.
33 minetest.settings:set("mt_biblebot_interval",180)
34 minetest.settings:save();
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()
42 function mt_biblebot.check_params(name,func,params)
43 local stat,vrs = func(params)
45 minetest.chat_send_player(name,vrs)
51 function mt_biblebot.read_verses()
54 local input = io.open(minetest.get_worldpath().."/mt_biblebot","r")
55 -- no input file found
57 -- look for default file
58 local default_input = io.open(minetest.get_modpath("mt_biblebot").."/"..mt_biblebote,"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")
65 -- or write default_input content in worldpath message file
66 local content = default_input:read("*all")
70 io.close(default_input)
71 input = io.open(minetest.get_worldpath().."/mt_biblebot","r")
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
81 function mt_biblebot.display_verse(verse_number)
82 local vrs = mt_biblebot.verses[verse_number] or verse_number
84 minetest.chat_send_all(vrs)
88 function mt_biblebot.show_verse()
89 mt_biblebot.display_message(table.random(mt_biblebot.verses))
94 --BEERHOLDER CODE HERE
95 function mt_biblebot.display_verse(verse_number)
96 local vrs = mt_biblebot.verses[verse_number] or verse_number
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))
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)
113 function mt_biblebot.list_verses()
115 for k,v in pairs(mt_biblebot.verses) do
116 str = str .. k .. " | " .. v .. "\n"
121 function mt_biblebot.remove_verse(k)
122 table.remove(mt_biblebot.verses,k)
123 mt_biblebot.save_verses()
126 function mt_biblebot.add_verse(t)
127 table.insert(mt_biblebot.verses,table.concat(t," ",2))
128 mt_biblebot.save_verses()
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")
139 --When server starts:
140 --mt_biblebot.set_interval()
141 mt_biblebot.read_verses()
144 minetest.register_globalstep(function(dtime)
145 TIMER = TIMER + dtime;
146 if TIMER > MESSAGE_INTERVAL then
147 mt_biblebot.show_verse()
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(
166 if not tonumber(params[2]) or
167 mt_biblebot.verses[tonumber(params[2])] == nil then
168 return false,"ERROR: No such verse."
173 mt_biblebot.remove_verse(t[2])
174 elseif t[1] == "addverse" then
176 minetest.chat_send_player(name,"ERROR: No verse.")
178 mt_biblebot.add_verse(t)
181 minetest.chat_send_player(name,"ERROR: Invalid command.")
187 --BEERHOLDER CODE HERE
188 local register_show_verse = {
190 description = "Say a random verse",
191 func = function(name, param)
192 mt_biblebot.show_verse()
196 --minetest.register_chatcommand("mt_biblebot", register_chatcommand_table)
197 --minetest.register_chatcommand("rverses", register_chatcommand_table)
198 --BEERHOLDER CODE HERE
199 minetest.register_chatcommand("verse", register_show_verse)