public override bool chatEvent(message m, chat c = null) { bool processed = false; if (c != null) { mod_quote_data chatData = (mod_quote_data)c.getPluginData(typeof(mod_quote_data)); if (m.text_msg.StartsWith("/quote_add")) { TelegramAPI.GetExpectedReply(c.chatID, m.userID, "Who is the quote by? Or enter 'cancel'", true, typeof(mod_quote), "WHO", m.userFullName, -1, true); processed = true; } else if (m.text_msg.StartsWith("/quote_conv")) { TelegramAPI.GetExpectedReply(c.chatID, m.userID, "Enter the first speaker's name, a \\, then the text (e.g. Bob\\I like Bees).\n\rOr enter 'cancel' to cancel", true, typeof(mod_quote), "WHO_M", m.userFullName, -1, true); processed = true; } else if (m.text_msg.StartsWith("/quote_config")) { List <string> options = new List <string>(); options.Add("Set Duration"); options.Add("Toggle automatic quotes"); string keyboard = TelegramAPI.createKeyboard(options, 1); TelegramAPI.GetExpectedReply(c.chatID, m.userID, "Quotes are currently " + (chatData.autoQuoteEnabled == true? "enabled" : "disabled") + " and set to announce every " + chatData.autoQuoteHours.ToString() + " hours" , false, typeof(mod_quote), "CONFIG", m.userFullName, m.message_id, true, keyboard); } else if (m.text_msg.StartsWith("/quote")) { TelegramAPI.SendMessage(m.chatID, getQuote(c), m.userFullName, true, m.message_id); processed = true; } } //also accept forwarded messages return(processed); }
public override bool chatEvent(message m, chat c = null) { bool processed = false; if (m.text_msg.StartsWith("/help") && c != null && c.muted == false) { mod_standard_chatdata chatData = c.getPluginData <mod_standard_chatdata>(); string openingMessage = "This is chat " + (c.chatTitle == null ? "" : c.chatTitle) + " (" + c.chatID + "). " + "\n\r"; if (chatData.quietHoursStartTime != TimeSpan.MinValue && chatData.quietHoursEndTime != TimeSpan.MinValue) { openingMessage += "Quiet time set between " + chatData.quietHoursStartTime.ToString("c") + " and " + chatData.quietHoursEndTime.ToString("c") + ". \n\r"; } TelegramAPI.SendMessage(m.chatID, openingMessage + getAllMethodDescriptions()); processed = true; } else if (m.text_msg.StartsWith("/save")) { Roboto.Settings.save(); TelegramAPI.SendMessage(m.chatID, "Saved settings"); processed = true; } else if (m.text_msg.StartsWith("/stop") && c != null) { c.muted = true; TelegramAPI.SendMessage(m.chatID, "I am now ignoring all messages in this chat until I get a /start command. "); //TODO - make sure we abandon any games processed = true; } else if (m.text_msg.StartsWith("/start") && c != null && c.muted == true) { c.muted = false; TelegramAPI.SendMessage(m.chatID, "I am listening for messages again. Type /help for a list of commands." + "\n\r" + getAllWelcomeDescriptions()); processed = true; } else if (m.text_msg.StartsWith("/start")) { //a default /start message where we arent on pause. Might be in group or private chat. TelegramAPI.SendMessage(m.chatID, getAllWelcomeDescriptions()); } else if (m.text_msg.StartsWith("/background")) { //kick off the background loop. Roboto.Settings.backgroundProcessing(true); } else if (m.text_msg.StartsWith("/setquiethours") && c != null) { TelegramAPI.GetExpectedReply(m.chatID, m.userID, "Enter the start time for the quiet hours, cancel, or disable. This should be in the format hh:mm:ss (e.g. 23:00:00)", true, this.GetType(), "setQuietHours"); processed = true; } else if (m.text_msg.StartsWith("/stats")) { TimeSpan uptime = DateTime.Now.Subtract(Roboto.startTime); String statstxt = "I is *@" + Roboto.Settings.botUserName + "*" + "\n\r" + "Uptime: " + uptime.Days.ToString() + " days, " + uptime.Hours.ToString() + " hours and " + uptime.Minutes.ToString() + " minutes." + "\n\r" + "I currently know about " + Roboto.Settings.chatData.Count().ToString() + " chats." + "\n\r" + "The following plugins are currently loaded:" + "\n\r"; foreach (RobotoModuleTemplate plugin in settings.plugins) { statstxt += "*" + plugin.GetType().ToString() + "*" + "\n\r"; statstxt += plugin.getStats() + "\n\r"; } TelegramAPI.SendMessage(m.chatID, statstxt, m.userFullName, true); processed = true; } else if (m.text_msg.StartsWith("/addadmin") && c != null) { //check if we have privs. This will send a fail if not. if (c.checkAdminPrivs(m.userID, c.chatID)) { //if there is no admin, add player if (!c.chatHasAdmins()) { bool added = c.addAdmin(m.userID, m.userID); if (added) { TelegramAPI.SendMessage(m.chatID, "Added " + m.userFullName + " as admin."); } else { TelegramAPI.SendMessage(m.chatID, "Something went wrong! "); log("Error adding user as an admin", logging.loglevel.high); } } else { //create a keyboard with the recent chat members List <string> members = new List <string>(); foreach (chatPresence p in c.getRecentChatUsers()) { members.Add(p.ToString()); } //send keyboard to player requesting admin. TelegramAPI.GetExpectedReply(m.chatID, m.userID, "Who do you want to add as admin?", true, typeof(mod_standard), "ADDADMIN", m.userFullName, -1, false, TelegramAPI.createKeyboard(members, 2)); } } else { log("User tried to add admin, but insufficient privs", logging.loglevel.high); } processed = true; } else if (m.text_msg.StartsWith("/removeadmin") && c != null) { //check if we have privs. This will send a fail if not. if (c.checkAdminPrivs(m.userID, c.chatID)) { //if there is no admin, add player if (!c.chatHasAdmins()) { TelegramAPI.SendMessage(m.chatID, "Group currently doesnt have any admins!"); } else { //create a keyboard with the recent chat members List <string> members = new List <string>(); foreach (long userID in c.chatAdmins) { members.Add(userID.ToString()); } //send keyboard to player requesting admin. TelegramAPI.GetExpectedReply(m.chatID, m.userID, "Who do you want to remove as admin?", true, typeof(mod_standard), "REMOVEADMIN", m.userFullName, -1, false, TelegramAPI.createKeyboard(members, 2)); } } else { log("User tried to remove admin, but insufficient privs", logging.loglevel.high); } processed = true; } else if (m.text_msg.StartsWith("/statgraph")) { string[] argsList = m.text_msg.Split(" ".ToCharArray(), 2); Stream image; //Work out args and get our image if (argsList.Length > 1) { string args = argsList[1]; image = Roboto.Settings.stats.generateImage(argsList[1].Split("|"[0]).ToList()); } else { image = Roboto.Settings.stats.generateImage(new List <string>()); } //Sending image... if (image != null) { TelegramAPI.SendPhoto(m.chatID, "Stats", image, "StatsGraph.jpg", "application/octet-stream", m.message_id, false); } else { TelegramAPI.SendMessage(m.chatID, "No statistics were found that matched your input, sorry!"); } processed = true; //TODO - keyboard for stats? } return(processed); }
public override bool chatEvent(message m, chat c = null) { bool processed = false; if (c != null) { mod_steam_chat_data chatData = (mod_steam_chat_data)c.getPluginData(typeof(mod_steam_chat_data)); if (m.text_msg.StartsWith("/steam_addplayer")) { TelegramAPI.GetExpectedReply(c.chatID, m.userID , "Enter the steamID of the player you want to add. /steam_help to find out how to get this." , false , typeof(mod_steam) , "ADDPLAYER", m.userFullName, m.message_id, true); processed = true; } else if (m.text_msg.StartsWith("/steam_help")) { TelegramAPI.SendMessage(m.chatID, "You are looking for an ID from the Steam Community site, try http://steamcommunity.com/ and find your profile. You should have something like http://steamcommunity.com/profiles/01234567890132456 . Take this number on the end of the URL." , m.userFullName, false, m.message_id); processed = true; } else if (m.text_msg.StartsWith("/steam_check")) { checkChat(c); processed = true; } else if (m.text_msg.StartsWith("/steam_stats")) { string announce = "Currently watching achievements from the following players: " + "\n\r"; foreach (mod_steam_player p in chatData.players) { announce += "*" + p.playerName + "* - " + p.chievs.Count().ToString() + " known achievements" + "\n\r"; } int achievements = 0; foreach (mod_steam_game g in localData.games) { achievements += g.chievs.Count(); } announce += "Tracking " + achievements.ToString() + " achievements across " + localData.games.Count().ToString() + " games"; TelegramAPI.SendMessage(m.chatID, announce, m.userFullName, true, m.message_id); } else if (m.text_msg.StartsWith("/steam_remove")) { List <string> playerKeyboard = new List <string>(); foreach (mod_steam_player p in chatData.players) { playerKeyboard.Add(p.playerName); } playerKeyboard.Add("Cancel"); string playerKeyboardText = TelegramAPI.createKeyboard(playerKeyboard, 2); TelegramAPI.GetExpectedReply(c.chatID, m.userID, "Which player do you want to stop tracking?", false, typeof(mod_steam), "REMOVEPLAYER", m.userFullName, m.message_id, true, playerKeyboardText); } } return(processed); }