summaryrefslogtreecommitdiff
path: root/src/automation.h
diff options
context:
space:
mode:
authorHello=) <hello@themanaworld.org>2024-03-28 03:58:45 +0300
committerHello=) <hello@themanaworld.org>2024-03-28 03:58:45 +0300
commitdb0b1da0060f5eb4b2af040c22ea9373d36970af (patch)
treedc2bdc0478c341bf4368fee4993c20e52f2d41c1 /src/automation.h
downloadguildbot-db0b1da0060f5eb4b2af040c22ea9373d36970af.tar.gz
guildbot-db0b1da0060f5eb4b2af040c22ea9373d36970af.tar.bz2
guildbot-db0b1da0060f5eb4b2af040c22ea9373d36970af.tar.xz
guildbot-db0b1da0060f5eb4b2af040c22ea9373d36970af.zip
Initial commit of Guild Bot, as seen in:
$ sha256sum guildsrc.zip ef61469ab59ce3f5dd3289505e89bd5b84e3a82b89cda90d25ae3c41f7464beb guildsrc.zip Verification shown its source 100% match to currently running version on TMWA. The following changes were made VS version found in guildsrc.zip: 1) src/build and src/dist content completely removed. Rationale: build-time artifacts; binaries contained login/password. 2) Executable flag (+x) removed from src/automation.cpp and src/main.cpp. Rationale: executable CPP sources are weird thing. No change to file content. 3) src/main.cpp changes: 3 lines: std::string main_username = "test"; std::string main_pw = "test"; std::string main_host = "127.0.0.1"; Rationale: avoid leaking real production credentials and ensure experimenters dont hammer real TMW prod server by experiments. Effort been made to preserve original file timestamps, etc. However toplevel src/ dir date adjusted to date of mentioned changes.
Diffstat (limited to 'src/automation.h')
-rw-r--r--src/automation.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/automation.h b/src/automation.h
new file mode 100644
index 0000000..0f563fe
--- /dev/null
+++ b/src/automation.h
@@ -0,0 +1,77 @@
+/*
+ *
+ * Automation.h: The Ruined Place Chat Bot.
+ *
+ */
+
+#include <iostream>
+#include <string>
+#include <set>
+
+
+
+extern bool automation;
+
+struct member
+{
+ std::string name;
+ std::string guildName; /* Now suports more than one group */
+ int status; // 0 = offline, 1 = online
+ int accesslevel; // -1 = blocked, 0 = normal member, 10 = guildmaster, 20 = admin.
+ /* Note: blocked users do not have there online status updated, so don't recieve any messages.*/
+ int info; /* 0 = hide info messages, 1 = show info messages*/
+
+ bool operator<(const member &a) const
+ { return name < a.name; }
+};
+
+struct memberinvite
+{
+ std::string name;
+ std::string guildName;
+
+ bool operator<(const memberinvite &a) const
+ { return name < a.name; }
+};
+
+struct whispermsg
+{
+ std::string name;
+ std::string message;
+};
+
+class Automation
+{
+ public:
+
+ Automation();
+ ~Automation();
+ static Automation *getAutomationHandler();
+
+ void commandHandler(std::string message, std::string nick);
+ void logic();
+
+ void addMember(std::string name, std::string guildName, int access);
+ void removeMember(std::string name);
+ bool inGuild(std::string name);
+ void addMessage(std::string msg, std::string guildName, std::string sender, int p);
+ void updateOnline(std::set<std::string> &onlinePlayers);
+ int countOnline(std::string guildName);
+ int accessLevel(std::string name);
+ void saveMembers();
+ void loadMembers();
+ void whisper(std::string name, std::string msg, int priority);
+ void showOptions();
+ std::string colorText(std::string text);
+
+
+ private:
+ std::string getMOTD(std::string guild);
+ void testMsg();
+ void debugMsg(std::string msg);
+ member findByName(std::string name);
+ void clearMembers();
+ bool hasPermission(std::string user, std::string player, int changeLevel);
+};
+
+