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 {
|
pub fn callback(self: *BotAdapter, message: zircon.Message) ?zircon.Message {
|
||||||
switch (message) {
|
switch (message) {
|
||||||
.PRIVMSG => |msg| {
|
.PRIVMSG => |msg| {
|
||||||
std.log.debug("received message: nick {?s}, user: {?s}, host: {?s}, targets: {s}, text: {s}", .{
|
std.log.debug(
|
||||||
msg.prefix.?.nick,
|
"received message: nick {?s}, user: {?s}, host: {?s}, targets: {s}, text: {s}",
|
||||||
msg.prefix.?.user,
|
.{ msg.prefix.?.nick, msg.prefix.?.user, msg.prefix.?.host, msg.targets, msg.text },
|
||||||
msg.prefix.?.host,
|
);
|
||||||
msg.targets,
|
|
||||||
msg.text,
|
|
||||||
});
|
|
||||||
const nick = if (msg.prefix) |prefix| if (prefix.nick) |nick| nick else "unknown" else "unknown";
|
const nick = if (msg.prefix) |prefix| if (prefix.nick) |nick| nick else "unknown" else "unknown";
|
||||||
if (BotCommand.parse(nick, msg.text)) |command| {
|
if (BotCommand.parse(nick, msg.text)) |cmd| {
|
||||||
return self.bot.execute(&command, msg.prefix, msg.targets) catch |err| {
|
return self.bot.execute(&cmd, msg.prefix, msg.targets) catch |err| return report_error(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)) |command| {
|
if (AdminCommand.parse(msg.text)) |cmd| {
|
||||||
return self.bot.execute_admin(&command, msg.prefix, "#eru-admin") catch |err| {
|
return self.bot.execute_admin(&cmd, msg.prefix, "#eru-admin") catch |err| return report_error(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 } };
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
self.bot.hear(BotMessage.new_owned(
|
const bot_msg = BotMessage.init_owned(
|
||||||
self.allocator,
|
self.allocator,
|
||||||
std.time.timestamp(),
|
std.time.timestamp(),
|
||||||
msg.prefix.?.nick orelse "unknown",
|
nick,
|
||||||
msg.targets,
|
msg.targets,
|
||||||
msg.text,
|
msg.text,
|
||||||
) catch |err| {
|
) catch |err| return report_error(err);
|
||||||
const error_msg = switch (err) {
|
self.bot.hear(&bot_msg);
|
||||||
Error.OutOfMemory => "eru failed to listen to a message with error: no memory",
|
return null;
|
||||||
else => unreachable,
|
},
|
||||||
};
|
.JOIN => |msg| {
|
||||||
return zircon.Message{
|
std.log.debug("received join message: channels {s}", .{msg.channels});
|
||||||
.PRIVMSG = .{ .targets = "jassob", .text = error_msg },
|
return null;
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
else => {
|
else => {
|
||||||
std.log.debug("received unknown message {}", .{message});
|
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 {
|
pub fn erased_callback(self: *anyopaque, message: zircon.Message) ?zircon.Message {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue