public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { //client.LocalUser.SendMessage(replyTarget, "Music has been stopped"); IrcHelper.SayInChannels(client, string.Format("{0} has stopped the music", source.Name)); this._jukebox.Stop(); }
private static void HandleEventLoop(IrcDotNet.IrcClient client) { bool isExit = false; while (!isExit) { Console.Write ("> "); var command = Console.ReadLine(); switch (command) { case "exit": isExit = true; break; default: if (!string.IsNullOrEmpty(command)) { if (command.StartsWith("/") && command.Length > 1) { client.SendRawMessage(command.Substring(1)); } else { Console.WriteLine("unknown command '{0}'", command); } } break; } } client.Disconnect(); }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { string[] words = Message.Trim().Split(' '); if (words.Length < 2 || words.Length > 2) { Client.LocalUser.SendMessage(Channel, "!random <start> <end>"); return; } int start, end; try { start = Convert.ToInt32(words[0]); end = Convert.ToInt32(words[1]); } catch (Exception) { Client.LocalUser.SendMessage(Channel, "Numbers please"); return; } int random = new Random().Next(start, end + 1); Client.LocalUser.SendMessage(Channel, random.ToString()); }
public void Execute(IrcDotNet.IrcClient client, string channel, IrcDotNet.IrcUser sender, string message) { if (words == null) { client.LocalUser.SendMessage(channel, "salkkari data base not initialized :<"); return; } int index = new Random().Next(words.Count); client.LocalUser.SendMessage(channel, words[index]); }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { WebClient client = new WebClient(); string nixi = client.DownloadString("http://thermopylas.fi/ws/nicksit.php"); byte[] bytes = Encoding.Default.GetBytes(nixi); nixi = Encoding.UTF8.GetString(bytes); nixi = nixi.Replace('\n', ' ').Trim(); Client.LocalUser.SendMessage(Channel, nixi); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { var users = _affinityTracker.GetMostLovedUsers(); Action<string> say = msg => client.LocalUser.SendMessage(targets, msg); say(string.Format("The {0} most loved users are:", users.Length)); for (int x = 0; x < users.Length; x++) say(string.Format("{0}) {1}", x + 1, users[x])); }
// The parameter 'message' contains the whole message without the command part ("!this" thing) // 'client' is used to send messages to the channel like I've done here. // You can also use it to get a list of nicks in the channel, topic of the channel, etc. // 'channel' just contains the name of the channel. // Please don't hardcode channel names or anything similar in here, // save the stuff in the configuration file and then use a variable to use it where necessary public void Execute(IrcDotNet.IrcClient client, string channel, IrcDotNet.IrcUser sender, string message) { // Do whatever you need to here string reverse = ""; char[] cArray = message.ToCharArray(); Array.Reverse(cArray); reverse = new string(cArray); // You can send a message to the channel from here. client.LocalUser.SendMessage(channel, reverse); }
public void ExecuteRemove(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { string message = Message.Trim(); if(message.IndexOf(' ') == -1) { remove(Message, explDictionaries[Channel], configs[Channel][configExplNameKey]); } else remove(message.Substring(0, message.IndexOf(' ')), message.Substring(message.IndexOf(' ') + 1), explDictionaries[Channel], configs[Channel][configExplNameKey]); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { var user = _userRepository.EnsureUser(source.Name, source.Name); var libraries = this._jukebox.GetLibrariesForUser(user.Id); client.LocalUser.SendMessage(targets, "Your libraries: "); foreach (var library in libraries) { client.LocalUser.SendMessage(targets, string.Format(" {0} (songs: {1}) (id: {2})", library.Name, library.TotalSongs, library.Id)); } }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { string helpString = ""; foreach (string command in features.commands.Keys) { helpString += command + " "; } helpString = "Available commands: " + helpString; Client.LocalUser.SendMessage(Channel, helpString); }
public bool handleURL(string url, IrcDotNet.IrcClient ctx, CtcpClient ctpcclient = null, IIrcMessageSource source = null) { var match = _imgurreg.Match(url); if (match.Success) { var id = match.Groups[2].Value; url = "http://imgur.com/gallery/" + id; website.handleURL(url, ctx, ctpcclient, source); return true; } return false; }
public void ExecuteAdd(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { ReadFromFile(); string[] messageAsArray = Message.Trim().Split(' '); string name = messageAsArray[0].Trim(); string expl = ""; for (int i = 1;i < messageAsArray.Length; i++) { expl += messageAsArray[i] + " "; } expl = expl.Trim(); Client.LocalUser.SendMessage(Channel, addExpl(name, expl, explDictionaries[Channel], configs[Channel][configExplNameKey])); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { var currentSong = _jukebox.CurrentSong; var currentUser = _userRepository.EnsureUser(source.Name, null); if (currentSong.UserId != currentUser.Id) { foreach (var target in targets) client.LocalUser.SendMessage(target, "You can only skip your songs"); return; } this._jukebox.SkipTrack(); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { IrcHelper.SayInChannels(client, string.Format("{0} loves this song", source.Name)); var user = this._userRepository.EnsureUser(source.Name, source.Name); try { _jukebox.Love(user.Id); } catch { client.LocalUser.SendMessage(targets, "There is no song playing; please do not love w/o a partner in public!"); return; } }
public void Execute(IrcDotNet.IrcClient Client, string channel, IrcDotNet.IrcUser Sender, string message) { ReadFromFile(); message = message.Trim(); string expl = ""; if (message.Trim() == "") { expl = explain(explDictionaries[channel]); } else { expl = explain(message, explDictionaries[channel]); } Client.LocalUser.SendMessage(channel, expl); }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { string question = UrlEncode(Message, Encoding.Default); string url = "http://www.lintukoto.net/viihde/oraakkeli/index.php?kysymys_24171206=" + question + "&rnd=24171206"; string html = getUrlHtmlContent(url); string sstring = "<p class='vastaus'>"; int index = html.IndexOf(sstring); string restOfString = html.Substring(index + sstring.Length); restOfString = restOfString.Substring(0, restOfString.IndexOf("</p>")); string answer = restOfString; Client.LocalUser.SendMessage(Channel, answer); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { var user = _userRepository.EnsureUser(source.Name, source.Name); parameters = NormalizeParameters(parameters); if (parameters.Count < 2) { InvalidAddLibraryCommand(client, targets); return; } var type = parameters[0]; switch ((type ?? string.Empty).ToLower()) { case "folder": if (parameters.Count != 2) { InvalidAddLibraryCommand(client, targets); return; } var path = parameters[1]; _jukebox.CreateLibrary(user.Id, LibraryType.SharedFolder, path, null, null); client.LocalUser.SendMessage(targets, string.Format("'{0}' has been added as a library, now syncing ...", path)); break; case "google": if (parameters.Count != 3) { InvalidAddLibraryCommand(client, targets); return; } var username = parameters[1]; var password = parameters[2]; _jukebox.CreateLibrary(user.Id, LibraryType.GoogleMusic, null, username, password); client.LocalUser.SendMessage(targets, string.Format("{0}'s google music library has been added as a library, now syncing ...", username)); break; default: InvalidAddLibraryCommand(client, targets); return; } }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { // Message sisältää argumentit // Jos Message on tyhjä, niin komennolle ei ole annettu argumentteja // Esimerkki: // !uguu -> Message on tyhjä // !uguu Crank -> Message == "Crank" // uguu u:kirjainten määrä vaihtelee satunnaisesti 2-17 välillä string text = ""; string uguu = "uu"; IrcUserCollection nicklist = Client.Channels.Client.Users; Random random = new Random(); if (Message == "") { int rnd = random.Next(0,16); for (int i = 0; i < rnd; i++) { uguu += 'u'; } uguu += '~'; //string[] IllegalNicks = { "SIMOBOT", Sender.NickName}; int rndNick = random.Next(0, nicklist.Count); text = nicklist[rndNick].NickName.TrimEnd("aeiouyåäö".ToCharArray()) + uguu; } else { Message = Message.Trim().TrimEnd("aeiouyåäö".ToCharArray()); int rnd = random.Next(0, 16); for (int i = 0; i < rnd; i++) { uguu += 'u'; } uguu += '~'; text = Message + uguu; } Client.LocalUser.SendMessage(Channel, text); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { IrcHelper.SayInChannels(client, string.Format("{0} hates this song", source.Name)); var user = this._userRepository.EnsureUser(source.Name, source.Name); HateResult result; try { result = _jukebox.Hate(user.Id); } catch { client.LocalUser.SendMessage(targets, "There is no song playing; please do not hate indiscriminately"); return; } if (result.HatersNeeded != 0) IrcHelper.SayInChannels(client, string.Format("{0} more haters needed to skip the track!", result.HatersNeeded)); }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { if (Message.Trim().Length == 0) { Client.LocalUser.SendMessage(Channel, getCompoundWord()); return; } int num = 0; try { num = Convert.ToInt32(Message); } catch (Exception e) { Client.LocalUser.SendMessage(Channel, getCompoundWord(Message)); return; } Client.LocalUser.SendMessage(Channel, getCompoundWord(num)); }
public override void ExecuteCommand(IrcDotNet.IrcClient client, IrcDotNet.IIrcMessageSource source, IList<IrcDotNet.IIrcMessageTarget> targets, string command, IList<string> parameters) { var user = _userRepository.EnsureUser(source.Name, source.Name); parameters = NormalizeParameters(parameters); if (parameters.Count == 0) { InvalidSyncLibraryCommand(client, targets, "Missing library id"); return; } if (parameters.Count > 1) { InvalidSyncLibraryCommand(client, targets, "Too many commands"); return; } _jukebox.UpdateLibrary(parameters[0]); client.LocalUser.SendMessage(targets, "Library sync has been queued"); }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { mainDb = Convert.ToInt16(configs[Channel]["markovmain"]); fastOneWordKeyDb = Convert.ToInt16(configs[Channel]["markovfast"]); rclient.Db = mainDb; string[] messageAsArray = Message.Trim().Split(' '); try { if (messageAsArray.Length == 1) Client.LocalUser.SendMessage(Channel, getNewMarkov(messageAsArray[0])); else if (messageAsArray.Length >= 2) Client.LocalUser.SendMessage(Channel, getNewMarkov(messageAsArray[0] + " " + messageAsArray[1])); else Client.LocalUser.SendMessage(Channel, getNewMarkov("")); } catch (Exception e) { Client.LocalUser.SendMessage(Channel, e.Message); } }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { Client.LocalUser.SendMessage(Channel, getURLTitle(Message)); }
public void Execute(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { try { if (Message.Trim() == "") { Say(Channel, ReadRandomEntry("fi"), Client); return; } string[] messageAsArray = Message.Trim().Split(' '); if (messageAsArray[0].ToLower() == "en") { Say(Channel, ReadRandomEntry("en"), Client); return; } else if (messageAsArray[0].ToLower() == "fi") { Say(Channel, ReadRandomEntry("fi"), Client); return; } string wikiEntry = ReadWikiEntry(Message); Say(Channel, wikiEntry, Client); } catch (Exception e) { Say(Channel, e.Message, Client); } }
private void HandleEventLoop(IrcDotNet.IrcClient client,string sChannel) { var channel = discordclient.Servers.First().TextChannels.Where(x => x.Name.ToLower() == sTargetChannel.ToLower()); bDisconnected = false; if (channel != null) { channel.First().SendMessage("Twitch Relay Activated"); } while (!isExit) { if (client.Channels.Where(x => x.Name.ToLower().Contains(sChannel.ToLower())).Count() == 0) { client.Channels.Join("#"+sChannel); } Thread.Sleep(5000); } discordclient.Servers.First().TextChannels.Where(x => x.Name.ToLower() == sTargetChannel.ToLower()).First().SendMessage("Twitch Relay Terminated"); client.Disconnect(); }
private void HandleEventLoop(IrcDotNet.IrcClient client) { logger.Debug("In HandleEventLoop"); IsExit = false; while (!IsExit) { Console.Write("> "); var command = Console.ReadLine(); switch (command) { case "exit": case "quit": IsExit = true; break; default: if (!string.IsNullOrEmpty(command)) { if (command.StartsWith("limit")) { short tempLimit; if (Int16.TryParse(command.Substring(6).Trim(), out tempLimit)) levels.LevelLimit = tempLimit; } else if (command == "o") { if (!levels.Open) { levels.OpenQueue(); client.SendPrivateMessage(MAINCHANNEL, "/me Submissions Open"); client.SendPrivateMessage(MAINCHANNEL, "/me Submit levels with !submit"); } } else if (command == "c") { if (levels.Open) { levels.CloseQueue(); client.SendPrivateMessage(MAINCHANNEL, "/me Submissions Closed"); if (levels.FinalLevels.Count >= 0) { string plural = (levels.FinalLevels.Count != 1) ? " levels " : " level "; client.SendPrivateMessage(MAINCHANNEL, "/me " + levels.FinalLevels.Count + plural + "will be randomly picked."); client.SendPrivateMessage(MAINCHANNEL, "/me Now Playing: " + levels.CurrentLevel); Console.WriteLine(); Console.WriteLine(levels.CurrentLevel + " (" + levels.Remaining + ")"); Console.WriteLine(); PostToWebsite(); } else client.SendPrivateMessage(MAINCHANNEL, "/me No Levels submitted."); } } else if (command.StartsWith("s ")) { command = command.Remove(0, 2).Trim(); SaveLevel(command); } else if (command == "settings") { OpenSettingsWindow(); } else if (command == "restart") { this.Restart = true; return; } else if (command.StartsWith("v ")) { command = command.Remove(0, 2).Trim(); short vol; if(Int16.TryParse(command,out vol)) { soundPlayerVolume = vol; } } else if (command.StartsWith("max ")) { command = command.Remove(0, 4).Trim(); int amt; if (Int32.TryParse(command, out amt)) { if (amt<=0) break; BotSettings.MaxSubmissionsForSingleUser = amt; Console.WriteLine("User can only submit " + amt + " level(s) per round."); Console.WriteLine(); } } else if (command.StartsWith("cool ")) { command = command.Remove(0, 5).Trim(); int tempCooldown; if (int.TryParse(command, out tempCooldown)) { cooldownSeconds = tempCooldown; } } else if (command == "q") { foreach (var level in levels.FinalLevels) { Console.WriteLine(level.Item2 + " " + level.Item1); } } else if (command.StartsWith("add ")) { string[]args = command.Split(' '); if (args.Length > 2) { if (LevelSubmitter.IsValidLevelCode(ref args[2])) { levels.ForceAddLevel(args[2].ToUpper(), args[1]); PostToWebsite(); if (levels.Remaining==0) Console.WriteLine(levels.CurrentLevel + " (" + levels.Remaining + ")"); } } } else if (command == "prev") { if (levels.Remaining == levels.FinalLevels.Count) break; levels.PreviousLevel(); PostToWebsite(); Console.WriteLine(); Console.WriteLine(levels.CurrentLevel + " (" + levels.Remaining + ")"); Console.WriteLine(); } else if (command == "h" || command == "help") { DisplayMainMenu(); } } //ELSE - command IsNullOrEmpty - (Enter Key pressed) else { if (levels.Remaining > 0) { levels.NextLevel(); PostToWebsite(); client.SendPrivateMessage(MAINCHANNEL, "/me Now Playing: " + levels.CurrentLevel); Console.WriteLine(); Console.WriteLine(levels.CurrentLevel + " ("+ levels.Remaining + ")"); Console.WriteLine(); } } break; } } client.Disconnect(); }
//TODO: Handle Playlist Requests //Request should look like this //https://www.googleapis.com/youtube/v3/playlists?id=id&key=key&part=snippet public bool handleURL(string URL, IrcDotNet.IrcClient ctx, CtcpClient client = null, IIrcMessageSource source = null) { string answer =""; var match = IsYtLink(URL); if(match != null) { string url = "https://www.googleapis.com/youtube/v3/videos"; // video ID url += "?id="; url += match; // API Token url += "&key="; url += "AIzaSyBQwWTl6Md5oOm858tKi4xIBGH3ELSaa_A"; // Fields url += "&fields="; url += "items%28id,snippet%28channelId,title,categoryId%29,statistics%29&part=snippet,statistics"; WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); Stream receivedstream = response.GetResponseStream(); Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); StreamReader readStream = new StreamReader(receivedstream, encode); Char[] read = new Char[1000000]; // setting max Chars for read (1M suffice aprox. 4700 Tickets) int count = readStream.Read(read, 0, 1000000); String str = ""; while (count > 0) { str = new String(read, 0, count); count = readStream.Read(read, 0, 1000000); } JObject obj = JObject.Parse(str); JArray jarr = (JArray)obj["items"]; foreach (var item in jarr) { answer = item["snippet"].SelectToken("title").ToString(); } ctx.LocalUser.SendMessage(Properties.Settings.Default.Channel, answer); return true; } else { if(URL.IndexOf("playlist?list") > 0) { string url = "https://www.googleapis.com/youtube/v3/playlists"; // video ID url += "?id="; url += URL.Substring(URL.IndexOf("playlist?list=") + 14, URL.Length - (URL.IndexOf("playlist?list=") + 14)); url += "&fields=items%2Fsnippet"; // API Token url += "&key="; url += "AIzaSyBQwWTl6Md5oOm858tKi4xIBGH3ELSaa_A"; // Fields url += "&part=snippet"; System.Diagnostics.Debug.WriteLine(url); WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); Stream receivedstream = response.GetResponseStream(); Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); StreamReader readStream = new StreamReader(receivedstream, encode); Char[] read = new Char[1000000]; // setting max Chars for read (1M suffice aprox. 4700 Tickets) int count = readStream.Read(read, 0, 1000000); String str = ""; while (count > 0) { str = new String(read, 0, count); count = readStream.Read(read, 0, 1000000); } JObject obj = JObject.Parse(str); JArray jarr = (JArray)obj["items"]; foreach (var item in jarr) { answer = item["snippet"].SelectToken("title").ToString(); } ctx.LocalUser.SendMessage(Properties.Settings.Default.Channel, answer); return true; } } return false; }
public void ExecuteSet(IrcDotNet.IrcClient Client, string Channel, IrcDotNet.IrcUser Sender, string Message) { string stuff = runSetLastFm(Message, Sender.NickName); Client.LocalUser.SendMessage(Channel, stuff); }
private void InvalidAddLibraryCommand(IrcDotNet.IrcClient client, IList<IrcDotNet.IIrcMessageTarget> replyTarget) { client.LocalUser.SendMessage(replyTarget, "Invalid command"); client.LocalUser.SendMessage(replyTarget, ".add-library folder \"path\""); client.LocalUser.SendMessage(replyTarget, ".add-library google \"username\" \"password\""); }
private static void Say(string channel, string msg, IrcDotNet.IrcClient client) { client.LocalUser.SendMessage(channel, msg); }