diff --git a/src/bot/main.c b/src/bot/main.c new file mode 100644 index 0000000..9b4b8d8 --- /dev/null +++ b/src/bot/main.c @@ -0,0 +1,110 @@ +// @COMPILECMD gcc main.c -lircclient +#define _GNU_SOURCE +#include +#include +#include +#include + +#define SERVER "irc.rizon.net" +#define PORT 6667 +#define CHANNEL "#/g/chad" +#define USERNAME "probotic" + +irc_session_t *session; +irc_callbacks_t callbacks; + +char* get_username(const char* origin){ + const char USERNAME_TERMINATOR = '!'; + + int i = 0; + while (origin[i] != USERNAME_TERMINATOR) + { + i++; + } + + char* r = (char*)malloc(i + 1); + + strncpy(r, origin, i); + r[i] = '\00'; + + return r; +} + +void +msg_wrapper(const char* fmt, + ...) +{ + va_list args; + char* fmtdmsg; + + va_start(args, fmt); + if(vasprintf(&fmtdmsg, fmt, args) == -1){ + exit(1); + } + + puts(fmtdmsg); + irc_cmd_msg(session, CHANNEL, fmtdmsg); + + free(fmtdmsg); + va_end(args); +} + +void +event_connect(irc_session_t *session, + const char *event, + const char *origin, + const char **params, + unsigned int count) +{ + irc_cmd_join(session, CHANNEL, 0); +} + +void +event_channel(irc_session_t *session, + const char *event, + const char *origin, + const char **params, + unsigned int count) +{ + const char *channel = params[0]; + const char *message = params[1]; + + char* swp = get_username(origin); + msg_wrapper("%s, you are a faggot for this opinion.", swp); + free(swp); +} + +int +init() +{ + memset(&callbacks, 0, sizeof(callbacks)); + callbacks.event_connect = event_connect; + callbacks.event_channel = event_channel; + + session = irc_create_session(&callbacks); + if (!session) { + printf("Error creating IRC session\n"); + return 1; + } + + irc_connect(session, SERVER, PORT, 0, USERNAME, USERNAME, USERNAME); + + if (irc_run(session) != 0) { + printf("Error running IRC session\nNo net?"); + return 1; + } + + return 0; +} + +int +main(int argc, + char *argv[]) +{ + if(init()){ return 1; } + + while(1){} + + irc_destroy_session(session); + return 0; +}