From 7994cb472dc262dcb3e0e27519715dd176c6f8d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=A6=8C=20=EA=A6=AB=EA=A6=B6=20=EA=A6=8F=EA=A7=80?= =?UTF-8?q?=EA=A6=A6=EA=A6=BF=20=EA=A6=A7=20=EA=A6=AE=20=EA=A6=91=20?= =?UTF-8?q?=EA=A6=A9=20=EA=A6=AD=EA=A7=80?= Date: Tue, 31 Dec 2019 15:53:46 +0800 Subject: A bot that joins a channel and post a message The arguments to the executable are the channel and the message. --- .gitignore | 2 ++ dircpsa.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .gitignore create mode 100644 dircpsa.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..583ad0b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.o +dircpsa diff --git a/dircpsa.c b/dircpsa.c new file mode 100644 index 0000000..1bc40b6 --- /dev/null +++ b/dircpsa.c @@ -0,0 +1,60 @@ +#include +#include +#include + +typedef struct { + char *channel; + char *message; +} irc_ctx_t; + +void event_connect(irc_session_t *session, const char *event, const char *origin + , const char **params, unsigned int count) +{ + irc_ctx_t *ctx = (irc_ctx_t *)irc_get_ctx(session); + irc_cmd_join(session, ctx->channel, NULL); +} + +void event_join(irc_session_t *session, const char *event, const char *origin + , const char **params, unsigned int count) +{ + irc_ctx_t *ctx = (irc_ctx_t *)irc_get_ctx(session); + irc_cmd_user_mode(session, "+i"); + irc_cmd_msg(session, params[0], ctx->message); + irc_cmd_quit (session, "selesai"); +} + +int main (int argc, char *argv[]) +{ + if (argc != 3) { + printf("Usage: %s \n", argv[0]); + return 1; + } + irc_ctx_t ctx = {.channel = argv[1], .message = argv[2]}; + + irc_callbacks_t callbacks; + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.event_connect = event_connect; + callbacks.event_join = event_join; + + irc_session_t *session = irc_create_session(&callbacks); + if (!session) { + printf("Could not create session\n"); + return 1; + } + irc_set_ctx(session, &ctx); + + if (irc_connect(session, "irc.darapsa.co.id", 6667, 0, "git", "interch" + , "Darapsa")) { + printf("Could not connect: %s\n" + , irc_strerror(irc_errno(session))); + return 1; + } + + if (irc_run(session)) { + printf ("Could not connect or I/O error: %s\n" + , irc_strerror (irc_errno(session))); + return 1; + } + + return 1; +} -- cgit v1.2.3