+ end,
+ clear = function(channel, from)
+ irc.say(channel.name, from .. ": Clearing your environment")
+ envs[from] = create_env()
+ end,
+ help = function(channel, from, arg)
+ if not arg then
+ irc.say(channel.name, from .. ": Commands: !clear, !eval, !help")
+ elseif arg == "eval" then
+ irc.say(channel.name, from .. ": Evaluates a Lua statement in your own persistent environment")
+ elseif arg == "clear" then
+ irc.say(channel.name, from .. ": Clears your personal environment")
+ end
+ end
+}
+
+irc.register_callback("connect", function()
+ irc.join("#doytest")
+end)
+
+irc.register_callback("channel_msg", function(channel, from, message)
+ message = message:gsub("^" .. nick .. "[:,>] ", "!eval ")
+ local is_cmd, cmd, arg = message:match("^(!)([%w_]+) ?(.-)$")
+ if is_cmd and commands[cmd] then
+ envs[from] = envs[from] or create_env()
+ commands[cmd](channel, from, arg)
+ end
+end)
+
+irc.register_callback("nick_change", function(from, old_nick)
+ if envs[old_nick] and not envs[from] then
+ envs[from] = envs[old_nick]
+ envs[old_nick] = nil