refactor(main.zig): move out error reporting
This commit is contained in:
parent
89c63a34c1
commit
508e084ddf
1 changed files with 27 additions and 37 deletions
64
src/main.zig
64
src/main.zig
|
|
@ -67,55 +67,45 @@ pub const BotAdapter = struct {
|
|||
pub fn callback(self: *BotAdapter, message: zircon.Message) ?zircon.Message {
|
||||
switch (message) {
|
||||
.PRIVMSG => |msg| {
|
||||
std.log.debug("received message: nick {?s}, user: {?s}, host: {?s}, targets: {s}, text: {s}", .{
|
||||
msg.prefix.?.nick,
|
||||
msg.prefix.?.user,
|
||||
msg.prefix.?.host,
|
||||
msg.targets,
|
||||
msg.text,
|
||||
});
|
||||
std.log.debug(
|
||||
"received message: nick {?s}, user: {?s}, host: {?s}, targets: {s}, text: {s}",
|
||||
.{ msg.prefix.?.nick, msg.prefix.?.user, msg.prefix.?.host, msg.targets, msg.text },
|
||||
);
|
||||
const nick = if (msg.prefix) |prefix| if (prefix.nick) |nick| nick else "unknown" else "unknown";
|
||||
if (BotCommand.parse(nick, msg.text)) |command| {
|
||||
return self.bot.execute(&command, msg.prefix, msg.targets) catch |err| {
|
||||
const err_msg = switch (err) {
|
||||
Error.NoMessage => "no matching message",
|
||||
Error.OutOfMemory => "out of memory",
|
||||
Error.WriteFailed => "write failed",
|
||||
};
|
||||
return .{ .PRIVMSG = .{ .prefix = msg.prefix, .targets = "#eru-admin", .text = err_msg } };
|
||||
};
|
||||
if (BotCommand.parse(nick, msg.text)) |cmd| {
|
||||
return self.bot.execute(&cmd, msg.prefix, msg.targets) catch |err| return report_error(err);
|
||||
}
|
||||
if (AdminCommand.parse(msg.text)) |command| {
|
||||
return self.bot.execute_admin(&command, msg.prefix, "#eru-admin") catch |err| {
|
||||
const err_msg = switch (err) {
|
||||
Error.NoMessage => "no matching message",
|
||||
Error.OutOfMemory => "out of memory",
|
||||
Error.WriteFailed => "write failed",
|
||||
};
|
||||
return .{ .PRIVMSG = .{ .prefix = msg.prefix, .targets = "#eru-admin", .text = err_msg } };
|
||||
};
|
||||
if (AdminCommand.parse(msg.text)) |cmd| {
|
||||
return self.bot.execute_admin(&cmd, msg.prefix, "#eru-admin") catch |err| return report_error(err);
|
||||
}
|
||||
self.bot.hear(BotMessage.new_owned(
|
||||
const bot_msg = BotMessage.init_owned(
|
||||
self.allocator,
|
||||
std.time.timestamp(),
|
||||
msg.prefix.?.nick orelse "unknown",
|
||||
nick,
|
||||
msg.targets,
|
||||
msg.text,
|
||||
) catch |err| {
|
||||
const error_msg = switch (err) {
|
||||
Error.OutOfMemory => "eru failed to listen to a message with error: no memory",
|
||||
else => unreachable,
|
||||
};
|
||||
return zircon.Message{
|
||||
.PRIVMSG = .{ .targets = "jassob", .text = error_msg },
|
||||
};
|
||||
});
|
||||
) catch |err| return report_error(err);
|
||||
self.bot.hear(&bot_msg);
|
||||
return null;
|
||||
},
|
||||
.JOIN => |msg| {
|
||||
std.log.debug("received join message: channels {s}", .{msg.channels});
|
||||
return null;
|
||||
},
|
||||
else => {
|
||||
std.log.debug("received unknown message {}", .{message});
|
||||
return null;
|
||||
},
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
fn report_error(err: Error) zircon.Message {
|
||||
const err_msg = switch (err) {
|
||||
Error.NoMessage => "no matching message",
|
||||
Error.OutOfMemory => "out of memory",
|
||||
Error.WriteFailed => "write failed",
|
||||
};
|
||||
return .{ .PRIVMSG = .{ .prefix = null, .targets = "#eru-admin", .text = err_msg } };
|
||||
}
|
||||
|
||||
pub fn erased_callback(self: *anyopaque, message: zircon.Message) ?zircon.Message {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue