pub mod events {
pub const PRIVMSG: &str = "irc.privmsg";
pub const ACTION: &str = "irc.action";
pub const NOTICE: &str = "irc.notice";
pub const JOIN: &str = "irc.join";
pub const PART: &str = "irc.part";
pub const QUIT: &str = "irc.quit";
pub const KICK: &str = "irc.kick";
pub const NICK: &str = "irc.nick";
pub const TOPIC: &str = "irc.topic";
pub const MODE: &str = "irc.mode";
pub const INVITE: &str = "irc.invite";
pub const WALLOPS: &str = "irc.wallops";
pub const CTCP_REQUEST: &str = "irc.ctcp_request";
pub const CTCP_RESPONSE: &str = "irc.ctcp_response";
pub const CONNECTED: &str = "connected";
pub const DISCONNECTED: &str = "disconnected";
#[expect(dead_code, reason = "planned event — needs state→scripting bridge")]
pub const MESSAGE_ADD: &str = "message_add";
#[expect(dead_code, reason = "planned event — needs state→scripting bridge")]
pub const BUFFER_SWITCH: &str = "buffer_switch";
pub const COMMAND_INPUT: &str = "command_input";
pub const DCC_CHAT_REQUEST: &str = "dcc.chat.request";
pub const DCC_CHAT_CONNECTED: &str = "dcc.chat.connected";
pub const DCC_CHAT_MESSAGE: &str = "dcc.chat.message";
pub const DCC_CHAT_CLOSED: &str = "dcc.chat.closed";
}
pub const LUA_SCRIPT_TEMPLATE: &str = r#"-- Script template
-- Save to ~/.repartee/scripts/<name>.lua
meta = {
name = "example",
version = "1.0",
description = "Example script",
}
function setup(api)
-- Events: api.on(event_name, handler, priority?)
-- IRC: api.irc.say(target, text) / .action / .notice / .raw / .join / .part
-- UI: api.ui.print(text) / .switch_buffer(id)
-- State: api.store.our_nick() / .buffers() / .connections() / .nicks(buffer_id)
-- Config: api.config.get(key, default) / .set(key, value)
-- Timers: api.timer(ms, handler) / api.timeout(ms, handler)
-- Cmds: api.command(name, { handler=fn, description=str })
-- Log: api.log("message")
api.on("irc.privmsg", function(ev)
api.log("got message from " .. ev.nick .. ": " .. ev.message)
end)
-- Optional cleanup on unload
return function()
api.log("script unloaded")
end
end
"#;