/* * * Automation.h: The Ruined Place Chat Bot. * */ #include #include #include 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 &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); };