mirror of
https://gitlab.com/niansa/asbots.git
synced 2025-03-06 20:48:25 +01:00
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
#include "test.hpp"
|
|
#include "../utility.hpp"
|
|
|
|
#include <async/result.hpp>
|
|
#include <fmt/format.h>
|
|
|
|
using fmt::operator""_format;
|
|
|
|
|
|
|
|
const auto serviceChannelName = "#servicechannel";
|
|
|
|
|
|
async::result<void> TestService::intitialize() {
|
|
co_await i->netInfo.wait_ready();
|
|
user = {
|
|
.server = i->config.get().server.uid,
|
|
.nick = "services",
|
|
.ident = "services",
|
|
.realhost = "services.",
|
|
.uid = uuid,
|
|
.realname = i->netInfo.name,
|
|
.loginName = "serviceD"
|
|
};
|
|
Channel serviceChannel = {
|
|
.server = i->config.get().server.uid,
|
|
.name = serviceChannelName
|
|
};
|
|
co_await mark_ready(user);
|
|
co_await i->send_event(serviceChannel.get_sjoin(user.uid));
|
|
co_await i->send_event(serviceChannel.get_topic("IRC Service channel", user.uid));
|
|
co_await i->send_event(user.get_notice("Test... Hello world!", serviceChannelName));
|
|
}
|
|
|
|
async::result<void> TestService::on_event(const Event& event) {
|
|
co_return;
|
|
}
|
|
|
|
async::result<void> TestService::on_direct_privmsg(std::string_view msg, u_User &author) {
|
|
auto cmd = Utility::strSplit(msg, ' ', 1);
|
|
auto command = Utility::lowers(cmd[0]);
|
|
|
|
Event response = user.get_notice("You need to log in first", author->uid);
|
|
if (command == "send") {
|
|
if (author->loginName.value_or("") == "NetOP") {
|
|
Event event;
|
|
try {
|
|
event.parse(cmd[1]);
|
|
co_await i->send_event(event);
|
|
response = user.get_notice("Sent.", author->uid);
|
|
} catch (std::exception&e) {
|
|
response = user.get_notice(e.what(), author->uid);
|
|
}
|
|
}
|
|
} else {
|
|
response = user.get_notice("Unknown command", author->uid);
|
|
}
|
|
co_await i->send_event(response);
|
|
}
|