public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { CommandManager commands = CommandManager.GetInstance(); if (!msg.HasMessage()) { msg.SendChat("Available commands: " + commands.AvailableCommands()); return; } string cmd = msg.Message.ToLower(); if (!commands.HasCommand(cmd)) { msg.SendChat("No help for command: " + cmd); } else { string help = commands.GetCommand(cmd).Help(); if (help == null || help.Equals("")) { msg.SendChat("No help available for: " + cmd); } else { msg.SendChat("Help for " + cmd + ": " + help); } } }
public IRCServer BuildServer() { var server = new IRCServer(HostName, Port, Channels, Nick, SSLEnabled, Password); server.Logging = LoggingEnabled; return(server); }
public void HandleCommand(IRCServer server, string command, IncomingMessage message) { if (!message.HasMessage()) { // bad syntax return; } if (COMMAND_REGEX.IsMatch(message.Message)) { Match m = COMMAND_REGEX.Match(message.Message); string cmd = m.Groups[1].Value; if (cmd.Equals("about")) { if (m.Groups[2].Value == null || m.Groups[2].Value.Equals("")) { message.SendChat("Need context"); } string markov = MarkovDatabaseAdapter.MarkovFind(m.Groups[2].Value, m.Groups[3].Value); if (markov == null || markov.Equals("")) { message.SendChat("I can't :("); } else { message.SendChat(markov); } } } }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { int i = new Random().Next(0, sayings.Length - 1); string saying = sayings[i]; msg.SendChat(saying); }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { if (msg.HasMessage()) { Expression e = new Expression(msg.Message); msg.SendChat(e.Evaluate().ToString()); } }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { if (msg.HasMessage()) { string nick = msg.Message.Split(' ')[0]; server.Nick = nick; } }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { var delta = DateTime.Now - BEGIN; var seconds = delta.Seconds.ToString("n0"); var minutes = Math.Floor(delta.TotalMinutes).ToString("n0"); var hours = Math.Floor(delta.TotalHours).ToString("n0"); var days = Math.Floor(delta.TotalDays).ToString("n0"); string reply = ""; if (!seconds.Equals("0")) { if (minutes.Equals("1")) { reply = seconds + " second."; } else { reply = seconds + " seconds."; } } if (!minutes.Equals("0")) { if (minutes.Equals("1")) { reply = minutes + " minute, " + reply; } else { reply = minutes + " minutes, " + reply; } } if (!hours.Equals("0")) { if (hours.Equals("1")) { reply = hours + " hour, " + reply; } else { reply = hours + " hours, " + reply; } } if (!days.Equals("0")) { if (days.Equals("1")) { reply = days + " day, " + reply; } else { reply = days + " days, " + reply; } } msg.SendChat("Current uptime: " + reply); }
public PrivateLine(IRCServer server, IRCUser user) { Server = server; User = user; Messages = new List<string>(); Modules = new List<Module>(); Modules.Add(new Login(this)); Modules.Add(new Register(this)); }
public void Handle(IncomingMessage msg) { IRCServer server = msg.Server; string ourNick = server.Nick; if (msg.Command.Equals("NICK")) { string whoChanging = msg.Sender; string changingTo = msg.Target; if (whoChanging.Equals(ourNick)) { server.Nick = changingTo; server.SetAttemptNickChange(false); } else { // update user nick list } } else if (msg.Command.Equals("ERROR")) { server.Dispose(); } else { string raw = msg.Raw; switch (msg.Command) { // nick change case "433": if (server.Connected) { // are we attempting a nick name change? if (server.IsAttemptNickChange()) { server.Nick = server.LastNick; server.SetAttemptNickChange(false); } } else { string nick; if (server.Nick.Equals(server.AltNick)) { nick = server.AltNick + 1; } else { nick = server.AltNick; } server.Nick = nick; } break; } } }
public void AddRegion(Scene scene) { if (!m_Enabled) { return; } m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), m_Port, scene); m_server.OnNewIRCClient += m_server_OnNewIRCClient; }
public IRCChannel(string name, string key, IRCServer parent) { if (!name.StartsWith("#")) { name = "#" + name; } Name = name; Key = key; Parent = parent; Init(); }
public void Initialise(Scene scene, IConfigSource source) { if (null != source.Configs["IRCd"] && source.Configs["IRCd"].GetBoolean("Enabled", false)) { int portNo = source.Configs["IRCd"].GetInt("Port", 6666); m_scene = scene; m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), portNo, scene); m_server.OnNewIRCClient += m_server_OnNewIRCClient; } }
public CTCPLine(IRCServer server, IRCUser user) { Server = server; User = user; Messages = new List<string>(); Modules = new List<Module>(); Modules.Add(new Modules.CTCP.Finger(this)); Modules.Add(new Modules.CTCP.Ping(this)); Modules.Add(new Modules.CTCP.Time(this)); Modules.Add(new Modules.CTCP.UserInfo(this)); Modules.Add(new Modules.CTCP.Version(this)); }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { if (msg.HasMessage()) { server.Write("QUIT :" + msg.Message); } else { server.Write("QUIT :Bye!"); } server.Flush(); server.Dispose(); }
public void Handle(IncomingMessage msg) { IRCServer server = msg.Server; string target = msg.Target; if (server.GetChannel(target).Reconnect) { Timer t = new Timer((obj) => { server.Write("JOIN " + target); server.Flush(); }, null, 5000, 0); } }
/// <summary> /// Waits for IRC server connections. /// </summary> private void WaitForIRCServerConnection() { ircServer = new IRCServer(daemonTCPSocket); while (true) { try { DaemonCommandBase daemand = ircServer.ReceiveCommand(); string Response = daemand.ExecuteCommand(); ircServer.SendResponse(Response); } catch { continue; } } }
public void HandleCommand(IRCServer server, string command, IncomingMessage message) { if (message.HasMessage()) { string msg = message.Message; string target = message.Target; string[] parts = message.Message.Split(new char[] { ' ' }, 2); if (parts[0].StartsWith("{") && parts[0].EndsWith("}") && parts.Length > 1) { target = parts[0].Replace("{", "").Replace("}", ""); msg = parts[1]; } server.SendMessage(target, msg); } }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { if (msg.HasMessage()) { string channel = msg.Message; string partMessage = "Bye!"; if (command.Equals("part")) { string[] parts; if (msg.Message.Contains(" ")) { parts = msg.Message.Split(new char[] { ' ' }, 2); } else { parts = new string[] { msg.Message }; } if (parts.Length > 1) { if (parts[0].StartsWith("#")) { channel = parts[0]; partMessage = parts[1]; } else { partMessage = msg.Message; } } server.PartChannel(channel, partMessage); } else { server.JoinChannel(msg.Message); } } else { msg.SendChat(Help()); } }
public UserCommand( IRCServer server, Context context, UserManager users, ChannelManager channels, ChannelUserRelations channelUsers, SessionManager sessions, IDataProvider dataProvider, WelcomeMessage welcomeMessage ) { Server = server ?? throw new ArgumentNullException(nameof(server)); Context = context ?? throw new ArgumentNullException(nameof(context)); Users = users ?? throw new ArgumentNullException(nameof(users)); Channels = channels ?? throw new ArgumentNullException(nameof(channels)); ChannelUsers = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers)); Sessions = sessions ?? throw new ArgumentNullException(nameof(sessions)); DataProvider = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider)); WelcomeMessage = welcomeMessage ?? throw new ArgumentNullException(nameof(welcomeMessage)); }
public void Handle(IncomingMessage msg) { IRCServer server = msg.Server; if (msg.Command.Equals("001")) { foreach (IRCChannel chan in server.GetChannels()) { server.Write("JOIN " + chan.Channel); } server.Write("PRIVMSG NICKSERV :IDENTIFY " + server.Pass); server.Flush(); server.Connected = true; } else if (msg.Raw.Contains("No more connections allowed from your host via this connect class")) { server.Dispose(); } }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { if (!msg.HasMessage()) { // oh no return; } string nick = msg.Message.ToLower().Split(new char[] { ' ' }, 2)[0]; string lastSeenEvent = Database.GetKeyValue(server, "lastseen.event." + nick); if (lastSeenEvent == null) { msg.SendChat("Have not seen " + nick); } else { TimeSpan t = TimeSpan.FromMilliseconds(Environment.TickCount - long.Parse(Database.GetKeyValue(msg.Server, "lastseen.time." + nick))); string answer = string.Format("{0:D2} hours, {1:D2} minutes, {2:D2} seconds", t.Hours, t.Minutes, t.Seconds); msg.SendChat(string.Format("Last seen {0}: {1} ago, {2}", nick, answer, lastSeenEvent)); } }
public WelcomeReply(IRCServer server, IUser user) { Server = server ?? throw new ArgumentNullException(nameof(server)); User = user ?? throw new ArgumentNullException(nameof(user)); }
public MyInfoReply(IRCServer server) { Server = server ?? throw new ArgumentNullException(nameof(server)); }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { int i = new Random().Next(0,sayings.Length-1); string saying = sayings[i]; msg.SendChat(saying); }
public PingCommand(IRCServer server, SessionManager sessions) { Server = server ?? throw new ArgumentNullException(nameof(server)); Sessions = sessions ?? throw new ArgumentNullException(nameof(sessions)); }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { if (!msg.HasMessage()) { msg.SendChat(Help()); return; } string term = msg.Message; long lastquery; try { lastquery = long.Parse(Database.GetKeyValue(msg.Server, LASTQUERY_PREFIX + term)); } catch (Exception) { lastquery = -1; } if (lastquery > 0 && Environment.TickCount - lastquery < TIMEOUT) { string lastdata = Database.GetKeyValue(msg.Server, LASTRESULT_PREFIX + term); if (lastdata != null && !lastdata.Equals("")) { msg.SendChat(msg.Sender + ": " + lastdata); } else { msg.SendChat(string.Format("{0}: There was an error last time retrieving the definition for {1}, please try again in {2} minute(s)", msg.Sender, term, TimeSpan.FromMilliseconds(TIMEOUT - (Environment.TickCount - lastquery)).Minutes)); } } else { string term_encoded; try { term_encoded = Uri.EscapeUriString(term); } catch (Exception) { msg.SendChat(msg.Sender + ": Error parsing location," + msg.Message); return; } Database.SetKeyValue(msg.Server, LASTQUERY_PREFIX + term, Environment.TickCount); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URBAN_URL + term_encoded); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseContent; using (var streamReader = new StreamReader(response.GetResponseStream())) { responseContent = streamReader.ReadToEnd(); } JObject json = JObject.Parse(responseContent); StringBuilder definition = new StringBuilder("Urban definition of `" + term + "`: "); try { definition.Append(json["list"][0]["definition"].ToString()); } catch (Exception) { msg.SendChat(msg.Sender + ": Error parsing urban data for, " + msg.Message); return; } string formatted = definition.ToString(); Database.SetKeyValue(msg.Server, LASTRESULT_PREFIX + term, formatted); msg.SendChat(msg.Sender + ": " + formatted); } }
public ISupportReply(IRCServer server) { Server = server ?? throw new ArgumentNullException(nameof(server)); }
public static string GetIRCMask(this IUser user, IRCServer server) { return($@"{user.GetIRCMask()}@{server.ServerHost}"); }
public AdminCommand(IRCServer server) { Server = server ?? throw new ArgumentNullException(nameof(server)); }
public void HandleCommand(IRCServer server, string command, IncomingMessage msg) { try { string location; if (!msg.HasMessage()) { location = Database.GetKeyValue(msg.Server, "weather.lastlocation." + msg.Sender); if (location == null) { msg.SendChat(msg.Sender + ": No previous location stored"); return; } } else { location = msg.Message; Database.SetKeyValue(msg.Server, "weather.lastlocation." + msg.Sender, location); } long lastquery = -1; try { lastquery = long.Parse(Database.GetKeyValue(msg.Server, "weather.lastquery." + location)); } catch (Exception) { lastquery = -1; } if (lastquery > 0 && Environment.TickCount - lastquery < TIMEOUT) { string lastdata = Database.GetKeyValue(msg.Server, "weather.lastdata." + location); if (lastdata != null && !lastdata.Equals("")) { msg.SendChat(msg.Sender + ": " + lastdata); } else { // oh no } } else { string location_encoded = Uri.EscapeUriString(location); Database.SetKeyValue(msg.Server, "weather.lastquery." + location, Environment.TickCount); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(WEATHER_URL + location_encoded); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseContent; using (var streamReader = new StreamReader(response.GetResponseStream())) { responseContent = streamReader.ReadToEnd(); } JObject json = JObject.Parse(responseContent); Database.SetKeyValue(msg.Server, "weather.lastquery." + location, Environment.TickCount); JToken list = json["list"][0]; StringBuilder w = new StringBuilder("Weather for " + list["name"].ToString() + ", " + list["sys"]["country"].ToString() + ", "); JToken weather = list["weather"][0]; string description = weather["description"].ToString(); if (description != null && !description.Equals("")) { w.Append(description).Append(", "); } JToken main = list["main"]; JToken wind = list["wind"]; w.Append(string.Format("Temp {0}c (min {1}c/max {2}c), {3}% Humidity, {4} hPa, {5}% Cloudy, Wind Speed {6}m/s", main["temp"].ToString(), main["temp_min"].ToString(), main["temp_max"].ToString(), main["humidity"].ToString(), main["pressure"].ToString(), list["clouds"]["all"].ToString(), wind["speed"].ToString())); JToken windGust = wind["gust"]; if (windGust != null) { w.Append(string.Format(" (gusting {0}m/s)", windGust.ToString())); } string formatted = w.ToString(); Database.SetKeyValue(msg.Server, "weather.lastdata." + location, formatted); msg.SendChat(msg.Sender + ": " + formatted); } } catch (Exception e) { Console.Write(e); } }
public static void WireUp(BotController controller, IRCServer server) { server.MessageReceived += new EventHandler <IRCMessage> (controller.ReceiveMessageHandler); controller.MessageSent += new EventHandler <IRCMessage> (server.SendMessageHandler); }