public override void Hook_PRIV(Channel channel, libirc.UserInfo invoker, string message) { // "\uff01" is the full-width version of "!". if ((message.StartsWith("!") || message.StartsWith("\uff01")) && GetConfig(channel, "Infobot.Enabled", true)) { while (Unwritable) { Thread.Sleep(10); } Unwritable = true; Infobot.InfoItem item = new Infobot.InfoItem { Channel = channel, Name = "!" + message.Substring(1), User = invoker, }; jobs.Add(item); Unwritable = false; } Infobot infobot = null; if (message.StartsWith(Configuration.System.CommandPrefix)) { infobot = (Infobot)channel.RetrieveObject("Infobot"); if (infobot == null) { Syslog.Log("Object Infobot in " + channel.Name + " doesn't exist", true); } if (GetConfig(channel, "Infobot.Enabled", true)) { if (infobot != null) { infobot.Find(message, channel); infobot.RSearch(message, channel); } } } if (Snapshots) { if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-recovery ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionRestoreSnapshot)) { string name = message.Substring("@infobot-recovery ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.RecoverSnapshot(channel, name); } return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-snapshot ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionSnaphot)) { string name = message.Substring("@infobot-snapshot ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.CreateSnapshot(channel, name); } return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-set-raw ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionAdd)) { string name = message.Substring("@infobot-set-raw ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.SetRaw(name, invoker.Nick, channel); return; } } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-unset-raw ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionAdd)) { string name = message.Substring("@infobot-unset-raw ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.UnsetRaw(name, invoker.Nick, channel); return; } } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-snapshot-rm ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionDeleteSnapshot)) { string name = message.Substring("@infobot-snapshot-rm ".Length); name.Replace(".", ""); name.Replace("/", ""); name.Replace("\\", ""); name.Replace("*", ""); name.Replace("?", ""); if (name == "") { IRC.DeliverMessage("You should specify a file name", channel); return; } if (!File.Exists(SnapshotsDirectory + Path.DirectorySeparatorChar + channel.Name + Path.DirectorySeparatorChar + name)) { IRC.DeliverMessage("File not found", channel); return; } File.Delete(SnapshotsDirectory + Path.DirectorySeparatorChar + channel.Name + Path.DirectorySeparatorChar + name); IRC.DeliverMessage("Requested file was removed", channel); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel); } return; } if (message == Configuration.System.CommandPrefix + "infobot-snapshot-ls") { string files = ""; DirectoryInfo di = new DirectoryInfo(SnapshotsDirectory + Path.DirectorySeparatorChar + channel.Name); FileInfo[] rgFiles = di.GetFiles("*"); int curr = 0; int displaying = 0; foreach (FileInfo fi in rgFiles) { curr++; if (files.Length < 200) { files += fi.Name + " "; displaying++; } } string response; if (curr == displaying) { response = "There are " + displaying + " files: " + files; } else { response = "There are " + curr + " files, but displaying only " + displaying + " of them: " + files; } if (curr == 0) { response = "There is no snapshot so far, create one!:)"; } IRC.DeliverMessage(response, channel.Name); return; } } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-share-trust+ ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB != "local") { IRC.DeliverMessage(messages.Localize("infobot16", channel.Language), channel); return; } if (channel.SharedDB != "local" && channel.SharedDB != "") { IRC.DeliverMessage(messages.Localize("infobot15", channel.Language), channel); return; } if (message.Length <= "@infobot-share-trust+ ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel.Name); return; } string name = message.Substring("@infobot-share-trust+ ".Length); Channel guest = Core.GetChannel(name); if (guest == null) { IRC.DeliverMessage(messages.Localize("db8", channel.Language), channel.Name); return; } if (channel.SharedLinkedChan.Contains(guest)) { IRC.DeliverMessage(messages.Localize("db14", channel.Language), channel.Name); return; } IRC.DeliverMessage(messages.Localize("db1", channel.Language, new List <string> { name }), channel.Name); lock (channel.SharedLinkedChan) { channel.SharedLinkedChan.Add(guest); } channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-ignore- ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionIgnore)) { string item = message.Substring("@infobot-ignore+ ".Length); if (item != "") { if (!channel.Infobot_IgnoredNames.Contains(item)) { IRC.DeliverMessage(messages.Localize("infobot-ignore-found", channel.Language, new List <string> { item }), channel); return; } channel.Infobot_IgnoredNames.Remove(item); IRC.DeliverMessage(messages.Localize("infobot-ignore-rm", channel.Language, new List <string> { item }), channel); channel.SaveConfig(); return; } } else { if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } } } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-ignore+ ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionIgnore)) { string item = message.Substring("@infobot-ignore+ ".Length); if (item != "") { if (channel.Infobot_IgnoredNames.Contains(item)) { IRC.DeliverMessage(messages.Localize("infobot-ignore-exist", channel.Language, new List <string> { item }), channel); return; } channel.Infobot_IgnoredNames.Add(item); IRC.DeliverMessage(messages.Localize("infobot-ignore-ok", channel.Language, new List <string> { item }), channel); channel.SaveConfig(); return; } } else { if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } } } if (message == Configuration.System.CommandPrefix + "infobot-off") { if (channel.SystemUsers.IsApproved(invoker, PermissionManage)) { if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage(messages.Localize("infobot1", channel.Language), channel); return; } IRC.DeliverMessage(messages.Localize("infobot2", channel.Language), channel, libirc.Defs.Priority.High); SetConfig(channel, "Infobot.Enabled", false); channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-share-trust- ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB != "local") { IRC.DeliverMessage(messages.Localize("infobot16", channel.Language), channel); return; } if (message.Length <= "@infobot-share-trust+ ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel); return; } string name = message.Substring("@infobot-share-trust- ".Length); Channel target = Core.GetChannel(name); if (target == null) { IRC.DeliverMessage(messages.Localize("db8", channel.Language), channel); return; } if (channel.SharedLinkedChan.Contains(target)) { channel.SharedLinkedChan.Remove(target); IRC.DeliverMessage(messages.Localize("db2", channel.Language, new List <string> { name }), channel); channel.SaveConfig(); return; } IRC.DeliverMessage(messages.Localize("db4", channel.Language), channel); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-detail ")) { if ((message.Length) <= "@infobot-detail ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel); return; } if (GetConfig(channel, "Infobot.Enabled", true)) { if (channel.SharedDB == "local" || channel.SharedDB == "") { if (infobot != null) { infobot.InfobotDetail(message.Substring(16), channel); } return; } if (channel.SharedDB != "") { Channel db = Core.GetChannel(channel.SharedDB); if (db == null) { IRC.DeliverMessage("Error, null pointer to shared channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.InfobotDetail(message.Substring(16), channel); } return; } return; } IRC.DeliverMessage("Infobot is not enabled on this channel", channel, libirc.Defs.Priority.Low); return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-link ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB == "local") { IRC.DeliverMessage(messages.Localize("infobot17", channel.Language), channel); return; } if (channel.SharedDB != "") { IRC.DeliverMessage(messages.Localize("infobot18", channel.Language, new List <string> { channel.SharedDB }), channel); return; } if ((message.Length - 1) < "@infobot-link ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel); return; } string name = message.Substring("@infobot-link ".Length); Channel db = Core.GetChannel(name); if (db == null) { IRC.DeliverMessage(messages.Localize("db8", channel.Language), channel); return; } if (!Infobot.Linkable(db, channel)) { IRC.DeliverMessage(messages.Localize("db9", channel.Language), channel); return; } channel.SharedDB = name.ToLower(); IRC.DeliverMessage(messages.Localize("db10", channel.Language), channel); channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message == Configuration.System.CommandPrefix + "infobot-share-off") { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB == "") { IRC.DeliverMessage(messages.Localize("infobot14", channel.Language), channel); return; } IRC.DeliverMessage(messages.Localize("infobot13", channel.Language), channel); foreach (Channel curr in Configuration.ChannelList) { if (curr.SharedDB == channel.Name.ToLower()) { curr.SharedDB = ""; curr.SaveConfig(); IRC.DeliverMessage(messages.Localize("infobot19", curr.Language, new List <string> { invoker.Nick }), curr); } } channel.SharedDB = ""; channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message == Configuration.System.CommandPrefix + "infobot-on") { if (channel.SystemUsers.IsApproved(invoker, PermissionManage)) { if (GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage(messages.Localize("infobot3", channel.Language), channel); return; } SetConfig(channel, "Infobot.Enabled", true); channel.SaveConfig(); IRC.DeliverMessage(messages.Localize("infobot4", channel.Language), channel, libirc.Defs.Priority.High); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message == Configuration.System.CommandPrefix + "infobot-share-on") { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB == "local") { IRC.DeliverMessage(messages.Localize("infobot11", channel.Language), channel, libirc.Defs.Priority.High); return; } if (channel.SharedDB != "local" && channel.SharedDB != "") { IRC.DeliverMessage(messages.Localize("infobot15", channel.Language), channel, libirc.Defs.Priority.High); return; } IRC.DeliverMessage(messages.Localize("infobot12", channel.Language), channel); channel.SharedDB = "local"; channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } } }
public override void Hook_PRIV(Channel channel, libirc.UserInfo invoker, string message) { // "\uff01" is the full-width version of "!". if ((message.StartsWith("!") || message.StartsWith("\uff01")) && GetConfig(channel, "Infobot.Enabled", true)) { while (Unwritable) { Thread.Sleep(10); } Unwritable = true; Infobot.InfoItem item = new Infobot.InfoItem { Channel = channel, Name = "!" + message.Substring(1), User = invoker, }; jobs.Add(item); Unwritable = false; } Infobot infobot = null; if (message.StartsWith(Configuration.System.CommandPrefix)) { infobot = (Infobot)channel.RetrieveObject("Infobot"); if (infobot == null) { Syslog.Log("Object Infobot in " + channel.Name + " doesn't exist", true); } if (GetConfig(channel, "Infobot.Enabled", true)) { if (infobot != null) { infobot.Find(message, channel); infobot.RSearch(message, channel); } } } if (Snapshots) { if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-recovery ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionRestoreSnapshot)) { string name = message.Substring("@infobot-recovery ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.RecoverSnapshot(channel, name); } return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-snapshot ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionSnaphot)) { string name = message.Substring("@infobot-snapshot ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.CreateSnapshot(channel, name); } return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-set-raw ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionAdd)) { string name = message.Substring("@infobot-set-raw ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.SetRaw(name, invoker.Nick, channel); return; } } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-unset-raw ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionAdd)) { string name = message.Substring("@infobot-unset-raw ".Length); if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage("Infobot is not enabled in this channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.UnsetRaw(name, invoker.Nick, channel); return; } } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-snapshot-rm ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionDeleteSnapshot)) { string name = message.Substring("@infobot-snapshot-rm ".Length); name.Replace(".", ""); name.Replace("/", ""); name.Replace("\\", ""); name.Replace("*", ""); name.Replace("?", ""); if (name == "") { IRC.DeliverMessage("You should specify a file name", channel); return; } if (!File.Exists(SnapshotsDirectory + Path.DirectorySeparatorChar + channel.Name + Path.DirectorySeparatorChar + name)) { IRC.DeliverMessage("File not found", channel); return; } File.Delete(SnapshotsDirectory + Path.DirectorySeparatorChar + channel.Name + Path.DirectorySeparatorChar + name); IRC.DeliverMessage("Requested file was removed", channel); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel); } return; } if (message == Configuration.System.CommandPrefix + "infobot-snapshot-ls") { string files = ""; DirectoryInfo di = new DirectoryInfo(SnapshotsDirectory + Path.DirectorySeparatorChar + channel.Name); FileInfo[] rgFiles = di.GetFiles("*"); int curr = 0; int displaying = 0; foreach (FileInfo fi in rgFiles) { curr++; if (files.Length < 200) { files += fi.Name + " "; displaying++; } } string response; if (curr == displaying) { response = "There are " + displaying + " files: " + files; } else { response = "There are " + curr + " files, but displaying only " + displaying + " of them: " + files; } if (curr == 0) { response = "There is no snapshot so far, create one!:)"; } IRC.DeliverMessage(response, channel.Name); return; } } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-share-trust+ ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB != "local") { IRC.DeliverMessage(messages.Localize("infobot16", channel.Language), channel); return; } if (channel.SharedDB != "local" && channel.SharedDB != "") { IRC.DeliverMessage(messages.Localize("infobot15", channel.Language), channel); return; } if (message.Length <= "@infobot-share-trust+ ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel.Name); return; } string name = message.Substring("@infobot-share-trust+ ".Length); Channel guest = Core.GetChannel(name); if (guest == null) { IRC.DeliverMessage(messages.Localize("db8", channel.Language), channel.Name); return; } if (channel.SharedLinkedChan.Contains(guest)) { IRC.DeliverMessage(messages.Localize("db14", channel.Language), channel.Name); return; } IRC.DeliverMessage(messages.Localize("db1", channel.Language, new List<string> { name }), channel.Name); lock (channel.SharedLinkedChan) { channel.SharedLinkedChan.Add(guest); } channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel.Name, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-ignore- ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionIgnore)) { string item = message.Substring("@infobot-ignore+ ".Length); if (item != "") { if (!channel.Infobot_IgnoredNames.Contains(item)) { IRC.DeliverMessage(messages.Localize("infobot-ignore-found", channel.Language, new List<string> { item }), channel); return; } channel.Infobot_IgnoredNames.Remove(item); IRC.DeliverMessage(messages.Localize("infobot-ignore-rm", channel.Language, new List<string> { item }), channel); channel.SaveConfig(); return; } } else { if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } } } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-ignore+ ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionIgnore)) { string item = message.Substring("@infobot-ignore+ ".Length); if (item != "") { if (channel.Infobot_IgnoredNames.Contains(item)) { IRC.DeliverMessage(messages.Localize("infobot-ignore-exist", channel.Language, new List<string> { item }), channel); return; } channel.Infobot_IgnoredNames.Add(item); IRC.DeliverMessage(messages.Localize("infobot-ignore-ok", channel.Language, new List<string> { item }), channel); channel.SaveConfig(); return; } } else { if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } } } if (message == Configuration.System.CommandPrefix + "infobot-off") { if (channel.SystemUsers.IsApproved(invoker, PermissionManage)) { if (!GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage(messages.Localize("infobot1", channel.Language), channel); return; } IRC.DeliverMessage(messages.Localize("infobot2", channel.Language), channel, libirc.Defs.Priority.High); SetConfig(channel, "Infobot.Enabled", false); channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-share-trust- ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB != "local") { IRC.DeliverMessage(messages.Localize("infobot16", channel.Language), channel); return; } if (message.Length <= "@infobot-share-trust+ ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel); return; } string name = message.Substring("@infobot-share-trust- ".Length); Channel target = Core.GetChannel(name); if (target == null) { IRC.DeliverMessage(messages.Localize("db8", channel.Language), channel); return; } if (channel.SharedLinkedChan.Contains(target)) { channel.SharedLinkedChan.Remove(target); IRC.DeliverMessage(messages.Localize("db2", channel.Language, new List<string> { name }), channel); channel.SaveConfig(); return; } IRC.DeliverMessage(messages.Localize("db4", channel.Language), channel); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-detail ")) { if ((message.Length) <= "@infobot-detail ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel); return; } if (GetConfig(channel, "Infobot.Enabled", true)) { if (channel.SharedDB == "local" || channel.SharedDB == "") { if (infobot != null) { infobot.InfobotDetail(message.Substring(16), channel); } return; } if (channel.SharedDB != "") { Channel db = Core.GetChannel(channel.SharedDB); if (db == null) { IRC.DeliverMessage("Error, null pointer to shared channel", channel, libirc.Defs.Priority.Low); return; } if (infobot != null) { infobot.InfobotDetail(message.Substring(16), channel); } return; } return; } IRC.DeliverMessage("Infobot is not enabled on this channel", channel, libirc.Defs.Priority.Low); return; } if (message.StartsWith(Configuration.System.CommandPrefix + "infobot-link ")) { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB == "local") { IRC.DeliverMessage(messages.Localize("infobot17", channel.Language), channel); return; } if (channel.SharedDB != "") { IRC.DeliverMessage(messages.Localize("infobot18", channel.Language, new List<string> { channel.SharedDB }), channel); return; } if ((message.Length - 1) < "@infobot-link ".Length) { IRC.DeliverMessage(messages.Localize("db6", channel.Language), channel); return; } string name = message.Substring("@infobot-link ".Length); Channel db = Core.GetChannel(name); if (db == null) { IRC.DeliverMessage(messages.Localize("db8", channel.Language), channel); return; } if (!Infobot.Linkable(db, channel)) { IRC.DeliverMessage(messages.Localize("db9", channel.Language), channel); return; } channel.SharedDB = name.ToLower(); IRC.DeliverMessage(messages.Localize("db10", channel.Language), channel); channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message == Configuration.System.CommandPrefix + "infobot-share-off") { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB == "") { IRC.DeliverMessage(messages.Localize("infobot14", channel.Language), channel); return; } IRC.DeliverMessage(messages.Localize("infobot13", channel.Language), channel); foreach (Channel curr in Configuration.ChannelList) { if (curr.SharedDB == channel.Name.ToLower()) { curr.SharedDB = ""; curr.SaveConfig(); IRC.DeliverMessage(messages.Localize("infobot19", curr.Language, new List<string> { invoker.Nick }), curr); } } channel.SharedDB = ""; channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message == Configuration.System.CommandPrefix + "infobot-on") { if (channel.SystemUsers.IsApproved(invoker, PermissionManage)) { if (GetConfig(channel, "Infobot.Enabled", true)) { IRC.DeliverMessage(messages.Localize("infobot3", channel.Language), channel); return; } SetConfig(channel, "Infobot.Enabled", true); channel.SaveConfig(); IRC.DeliverMessage(messages.Localize("infobot4", channel.Language), channel, libirc.Defs.Priority.High); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } return; } if (message == Configuration.System.CommandPrefix + "infobot-share-on") { if (channel.SystemUsers.IsApproved(invoker, PermissionShare)) { if (channel.SharedDB == "local") { IRC.DeliverMessage(messages.Localize("infobot11", channel.Language), channel, libirc.Defs.Priority.High); return; } if (channel.SharedDB != "local" && channel.SharedDB != "") { IRC.DeliverMessage(messages.Localize("infobot15", channel.Language), channel, libirc.Defs.Priority.High); return; } IRC.DeliverMessage(messages.Localize("infobot12", channel.Language), channel); channel.SharedDB = "local"; channel.SaveConfig(); return; } if (!channel.SuppressWarnings) { IRC.DeliverMessage(messages.Localize("PermissionDenied", channel.Language), channel, libirc.Defs.Priority.Low); } } }