mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 18:25:10 +00:00
[ADD/WIP] Create and use basic command parser
Still need to write the router.
This commit is contained in:
parent
f434f7aa87
commit
c4b7d1b92a
6 changed files with 220 additions and 12 deletions
|
|
@ -73,6 +73,7 @@ ParseeBotHandler(ParseeData *data, HashMap *event)
|
|||
"@", data->config->sender_localpart,
|
||||
":", data->config->homeserver_host
|
||||
);
|
||||
Command *cmd;
|
||||
|
||||
if (StrEquals(msgtype, "m.notice"))
|
||||
{
|
||||
|
|
@ -104,17 +105,17 @@ ParseeBotHandler(ParseeData *data, HashMap *event)
|
|||
return;
|
||||
}
|
||||
body++;
|
||||
#define BAN_USER "ban-user "
|
||||
#define BAN_LIST "ban-list "
|
||||
#define BAN_USER "ban-user"
|
||||
#define BAN_LIST "ban-list"
|
||||
#define LS_USERS "ls-flying"
|
||||
if (!strncmp(body, BAN_USER, strlen(BAN_USER)))
|
||||
cmd = CommandParse(body);
|
||||
if (cmd && StrEquals(cmd->command, BAN_USER))
|
||||
{
|
||||
char user[256] = { 0 };
|
||||
char room[256] = { 0 };
|
||||
char *user = HashMapGet(cmd->arguments, "user");
|
||||
char *room = HashMapGet(cmd->arguments, "user");
|
||||
char *msg;
|
||||
|
||||
body += strlen(BAN_USER);
|
||||
if (sscanf(body, "%255s %255s", &user, &room) != 2)
|
||||
if (!user || !room)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
|
|
@ -128,7 +129,7 @@ ParseeBotHandler(ParseeData *data, HashMap *event)
|
|||
));
|
||||
Free(msg);
|
||||
}
|
||||
else if (!strncmp(body, LS_USERS, strlen(LS_USERS)))
|
||||
else if (cmd && StrEquals(cmd->command, LS_USERS))
|
||||
{
|
||||
DbRef *listed = DbLock(data->db, 1, "global_bans");
|
||||
HashMap *json = DbJson(listed);
|
||||
|
|
@ -156,13 +157,12 @@ ParseeBotHandler(ParseeData *data, HashMap *event)
|
|||
Free(str);
|
||||
DbUnlock(data->db, listed);
|
||||
}
|
||||
else if (!strncmp(body, BAN_LIST, strlen(BAN_LIST)))
|
||||
else if (cmd && StrEquals(cmd->command, BAN_LIST))
|
||||
{
|
||||
char user[256] = { 0 };
|
||||
char *user = HashMapGet(cmd->arguments, "user");
|
||||
char *msg;
|
||||
|
||||
body += strlen(BAN_USER);
|
||||
if (sscanf(body, "%255s", &user) != 1)
|
||||
if (!user)
|
||||
{
|
||||
goto end;
|
||||
}
|
||||
|
|
@ -178,6 +178,7 @@ ParseeBotHandler(ParseeData *data, HashMap *event)
|
|||
}
|
||||
end:
|
||||
Free(profile);
|
||||
CommandFree(cmd);
|
||||
}
|
||||
static void
|
||||
ParseeMessageHandler(ParseeData *data, HashMap *event)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue