forked from minetest-mods/irc
added bot commands
This commit is contained in:
parent
ba876eeef9
commit
b6a79dff50
@ -27,6 +27,68 @@ irc.register_callback("channel_msg", function ( channel, from, message )
|
||||
end
|
||||
end);
|
||||
|
||||
mt_irc.bot_commands = {
|
||||
help = {
|
||||
func = function ( from, args )
|
||||
irc.say(from, "HELP:");
|
||||
irc.say(from, ">username message");
|
||||
irc.say(from, " Send private message <message> to <username>");
|
||||
irc.say(from, "!who");
|
||||
irc.say(from, " Return list of players currently in-game");
|
||||
irc.say(from, "!help");
|
||||
irc.say(from, " Show this help message");
|
||||
end;
|
||||
};
|
||||
who = {
|
||||
func = function ( from, args )
|
||||
local s = "";
|
||||
for k, v in pairs(mt_irc.connected_players) do
|
||||
if (v) then
|
||||
s = s.." "..k;
|
||||
end
|
||||
end
|
||||
irc.say(from, "Players On Channel:"..s);
|
||||
end;
|
||||
};
|
||||
whereis = {
|
||||
-- !whereis PLAYER
|
||||
func = function ( from, args )
|
||||
if (args == "") then
|
||||
irc.say(from, "Usage: !whereis PLAYER");
|
||||
return;
|
||||
end
|
||||
local list = minetest.env:get_objects_inside_radius({x=0,y=0,z=0}, 100000);
|
||||
for _, obj in ipairs(list) do
|
||||
if (obj:is_player() and (obj:get_player_name() == args)) then
|
||||
local fmt = "Player %s is at (%.2f,%.2f,%.2f)";
|
||||
local pos = obj:getpos();
|
||||
irc.say(from, fmt:format(args, pos.x, pos.y, pos.z));
|
||||
end
|
||||
end
|
||||
end;
|
||||
};
|
||||
};
|
||||
|
||||
local function bot_command ( from, message )
|
||||
|
||||
local pos = message:find(" ", 1, true);
|
||||
local cmd, args;
|
||||
if (pos) then
|
||||
cmd = message:sub(1, pos - 1);
|
||||
args = message:sub(pos + 1);
|
||||
else
|
||||
cmd = message;
|
||||
args = "";
|
||||
end
|
||||
|
||||
if (not mt_irc.bot_commands[cmd]) then
|
||||
irc.say(from, "Unknown command `"..cmd.."'. Try `!help'.");
|
||||
end
|
||||
|
||||
mt_irc.bot_commands[cmd].func(from, args);
|
||||
|
||||
end
|
||||
|
||||
irc.register_callback("private_msg", function ( from, message )
|
||||
if (not mt_irc.connect_ok) then return; end
|
||||
local player_to;
|
||||
@ -36,8 +98,11 @@ irc.register_callback("private_msg", function ( from, message )
|
||||
if (not pos) then return; end
|
||||
player_to = message:sub(2, pos - 1);
|
||||
msg = message:sub(pos + 1);
|
||||
elseif (message:sub(1, 1) == "!") then
|
||||
bot_command(from, message:sub(2));
|
||||
return;
|
||||
else
|
||||
irc.say(from, 'Please use the ">username message" syntax.');
|
||||
irc.say(from, 'Message not sent! Please use "!help" to see possible commands.');
|
||||
return;
|
||||
end
|
||||
if (not mt_irc.connected_players[player_to]) then
|
||||
|
Loading…
Reference in New Issue
Block a user