Inheritance: System.EventArgs
Beispiel #1
1
        public void ExecuteMethodFromRegex(IrcEventArgs e)
        {
            if(isRunning==true)
            {
                SendUnscramble(e);
            }
            foreach(KeyValuePair<string,string> pair in regexDictionary)
            {
                regex = new Regex(pair.Key);
                if(regex.IsMatch(e.Data.Message))
                {
                    string methodName = pair.Value;

                        //Get the method information using the method info class
                        MethodInfo mi = this.GetType().GetMethod(methodName);
                        object[] objargs = new object[1];
                        objargs[0]=e;
            //						//Invoke the method
            //						// (null- no paramyeseter for the method call
            //						// or you can pass the array of parameters...)
                    if(mi==null)
                    {
                        //client.SendMessage(SendType.Message, e.Data.Channel,"mi is null! "+e.Data.Message);
                        SharpBotClient.SharpBotClient.SendChannelMessag(e.Data.Channel,"handled from client");
                    }
                    else
                    {
                        mi.Invoke(this,objargs);
                    }

                }
            }
        }
Beispiel #2
0
 private void _ircClient_OnQueryNotice(object sender, SIRC4N.IrcEventArgs e)
 {
     if (_authenticate && NoticeIsExpectedServicesAgentMessage(e.Data.Nick, e.Data.Message))
     {
         JoinChannelsForNetwork();
     }
 }
Beispiel #3
0
        void client_OnQueryMessage(object sender, IrcEventArgs e)
        {
            string message = e.Data.Message;
            string nick = e.Data.Nick;

            if (!globalStorage.IgnoredUsers.Contains(nick) && message.StartsWith(activator))
            {
                if (message.Equals(activator))
                {
                    log.VerboseMessage(nick + " sent karma activator, sending back how to write a request properly");
                    client.SendMessage(SendType.Message, nick, "Usage: " + activator + " [subject]");
                }
                else
                {
                    string karmaOf = message.Substring(activator.Length + 1); // this is the length plus a space
                    log.VerboseMessage(nick + " asked for karma of " + karmaOf);

                    if (globalStorage.karmaDatabase.ContainsKey(karmaOf))
                    {
                        int karma = globalStorage.karmaDatabase[karmaOf];
                        client.SendMessage(SendType.Message, nick, karmaOf + " has a karma of " + karma);
                        log.DebugMessage("karma is " + karma);
                    }
                    else
                    {
                        client.SendMessage(SendType.Message, nick, karmaOf + " has karma of 0.");
                        log.DebugMessage("karma is 0");
                    }
                }
            }
        }
Beispiel #4
0
        protected Match GetMatch(MessageType type, IrcEventArgs args)
        {
            string msg = args.Data.Message;

              if (!msg.StartsWith(Prefix)) {
            return null;
              }

              msg = msg.Substring(Prefix.Length);

              var match = Attribute.Regex.Match(msg);

              if (Attribute.Type != MessageType.All && Attribute.Type != type) {
            return null;
              }

              if (!args.Data.Message.StartsWith(Prefix)) {
            return null;
              }

              if (!match.Success) {
            return null;
              }

              return match;
        }
Beispiel #5
0
 void OnQueryMessage(object sender, IrcEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         lblMessage.Content = string.Format("{0}:\n(private) <{1}> {2}", e.Data.Type, e.Data.Nick, @e.Data.Message);
     }));
 }
Beispiel #6
0
        void Client_OnQueryMessage(object sender, IrcEventArgs e)
        {
            using (var context = new DataContext())
            {
                switch (e.Data.Type)
                {
                    case ReceiveType.Join:
                        Client.RfcNotice(e.Data.Nick, "Hi, I am a IRC bot written in C# that executes code with Roslyn.");
                        Client.RfcNotice(e.Data.Nick, "To try me out, send me a private message with the following: var hello = \"hello world\"; return hello;");
                        Client.RfcNotice(e.Data.Nick, "You can also execute multi-line commands by starting the line with \">>\" remember to have a return statement in your last command");
                        break;
                    case ReceiveType.ChannelMessage:
                        if ((e.Data.Type == ReceiveType.ChannelMessage && e.Data.Message.StartsWith(BotSettings.Default.Name) && e.Data.Message.Length > BotSettings.Default.Name.Length) || (e.Data.Message.StartsWith(">>") && e.Data.Message.Length > 4))
                        {
                            var queryCommand = e.Data.Message.Substring(string.Format(BotSettings.Default.Name).Length + 1).Trim();
                            ProcessCommand(e, context, queryCommand);

                        }
                        break;
                    case ReceiveType.QueryMessage:
                        var channelCommand = e.Data.Message;
                        ProcessCommand(e, context, channelCommand);
                        break;
                }
            }
        }
Beispiel #7
0
 void OnChannelMessage(object sender, IrcEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         lblMessage.Content = string.Format("{0}:\n({1}) <{2}> {3}", e.Data.Type, e.Data.Channel, e.Data.Nick, @e.Data.Message);
     }));
 }
Beispiel #8
0
        protected override CommandCompletedEventArgs Worker(IrcEventArgs e)
        {
            Thread.Sleep(3000);
            e.Data.Irc.SendMessage(SendType.Message, e.Data.Channel, "Async wait done");

            return null;
        }
Beispiel #9
0
        protected override CommandCompletedEventArgs Worker(IrcEventArgs e)
        {
            string url = "http://tyda.se/search?form=1&w=" + e.Data.Message.Split(new char[] { ' ' }, 2).LastOrDefault(); // TODO: URL encode
            string html = HtmlHelper.GetFromUrl(url);

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);

            HtmlNodeCollection foundNodes = doc.DocumentNode.SelectNodes("//div [@class = 'tyda_content']/descendant::table [@class = 'tyda_res_body']/descendant::table [starts-with(@class, 'tyda_res_body_trans')]/descendant::a [starts-with(@id, 'tyda_trans')]");

            string message;
            if (foundNodes != null && foundNodes.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("Translate: ");
                IEnumerable<HtmlNode> nodes = foundNodes.Take(4);
                foreach (HtmlNode node in nodes)
                {
                    if (!string.IsNullOrWhiteSpace(node.InnerText))
                    {
                        sb.Append(node.InnerText);
                        if (node != nodes.Last())
                            sb.Append(", ");
                    }
                }
                message = sb.ToString();
            }
            else
                message = "No results found";

            return new CommandCompletedEventArgs(e.Data.Channel, new List<string> { message });
        }
        public override void Execute(IrcEventArgs args)
        {
            string destination = string.Empty;
            ChannelList channelList = new ChannelList();
            AddChannelsFromMessage(args.Data.MessageArray, channelList);

            if(args.Data.Type == ReceiveType.QueryMessage)
            {
                if (channelList.Count == 0)
                {
                    var channels = TaskListPlugin.Repository.GetChannels();

                    channelList.AddRange(channels);
                }

                destination = args.Data.Nick;
            } else if(args.Data.Type == ReceiveType.ChannelMessage)
            {
                var channel = args.Data.Channel;
                if(channelList.Count == 0)
                {
                    channelList.Add(channel);
                }

                destination = channel;
            }

            foreach (var channel in channelList)
            {
                ShowTaskListForChannel(channel, destination);
            }
        }
Beispiel #11
0
        public override void Execute(IrcEventArgs args)
        {
            var message = args.Data.MessageArray;
            var channel = args.Data.Channel;
            var nick = args.Data.Nick;

            List<QuestionSet> sets = new List<QuestionSet>();

            if(message.Length > 2)
            {
                for(int i = 2;i < message.Length;i++)
                {
                    int i1 = i;
                    QuestionSet questionSetToFind = TriviaPlugin.QuestionSets.Find(x => x.QuestionSetName.StartsWith(message[i1]));
                    if(questionSetToFind != null)
                    {
                        sets.Add(questionSetToFind);
                    }
                }
            }

            if (!TriviaPlugin.Games.ContainsKey(channel))
            {
                TriviaPlugin.Games.Add(channel,
                    sets.Count > 0 ? new TriviaGame(TriviaPlugin, channel, sets) : new TriviaGame(TriviaPlugin, channel));
            }

            TriviaPlugin.Games[channel].StartGame(nick);
        }
Beispiel #12
0
        public override void Execute(IrcEventArgs args)
        {
            var channel = args.Data.Channel;
            var user = args.Data.Nick;
            string madeNewTaskList = string.Empty;

            if(args.Data.MessageArray.Length < 3)
                throw new Exception("Not enough parameters supplied for command.");

            var taskListName = GetTaskListName(args.Data.MessageArray);

            string taskText = string.Empty;
            for(int i = 2;i < args.Data.MessageArray.Length; i++)
                taskText += string.Format(" {0}", args.Data.MessageArray[i]);

            TaskList list = TaskListPlugin.Repository.GetTaskList(taskListName);
            if(list == null)
            {
                // todo interface out a concept for default status
                list = TaskListPlugin.Repository.CreateNewTaskList(taskListName, user, channel,string.Empty);
                madeNewTaskList = "new";
            }

            Task newTask = list.NewTask(taskText, user);

            TaskListPlugin.SendMessage(string.Format("Added task to {0} TaskList {1} ({2} / {3} completed)",madeNewTaskList, list.TaskName, list.CompletedTasks(),list.Tasks.Count), channel);
        }
        public override void Execute(IrcEventArgs args)
        {
            List<QuestionSet> questionSets = new List<QuestionSet>();
            var questionSetNodes = TriviaPlugin.PluginSettings.SelectNodes(QuestionSetXPath);

            if(questionSetNodes == null)
                throw new Exception("Could not find any question sets in Settings config");

            foreach (XmlNode node in questionSetNodes)
            {
                string filePath = TriviaPlugin.Bot.FilePath + node.InnerText;

                if (!string.IsNullOrEmpty(node.InnerText) && File.Exists(filePath))
                {
                    string questonSetName;

                    if (node.Attributes[QuestionSetNameAttributeName] != null
                        && !string.IsNullOrEmpty(node.Attributes[QuestionSetNameAttributeName].Value))
                    {
                        questonSetName = node.Attributes[QuestionSetNameAttributeName].Value;
                    }
                    else
                    {
                        questonSetName = node.InnerText;
                    }

                    QuestionSet set = new QuestionSet(filePath) { QuestionSetName = questonSetName };

                    questionSets.Add(set);
                }
            }

            TriviaPlugin.QuestionSets = questionSets;
        }
        public override bool ShouldExecuteCommand(IrcEventArgs args)
        {
            var currentGame = TriviaPlugin.GetGameForChannel(args.Data.Channel);

            return base.ShouldExecuteCommand(args)
                && currentGame != null && currentGame.CurrentState != GameState.Started;
        }
        public override void Execute(IrcEventArgs args)
        {
            string channel = args.Data.Channel;

            if(args.Data.MessageArray.Length < 2)
                throw new Exception("Not enough parameters supplied");

            string taskListName = args.Data.MessageArray[1];

            TaskList taskList = Plugin.Repository.GetTaskList(taskListName);

            if(taskList == null)
                throw new Exception(string.Format("Could not find Task List {0}",taskListName));

            List<Task> completedTasks = new List<Task>();
            foreach (Task task in taskList)
            {
                if(task.Complete)
                {
                    completedTasks.Add(task);
                    continue;
                }
                Plugin.SendMessage(task, channel);
            }

            foreach(Task task in completedTasks)
            {
                Plugin.SendMessage(task,channel);
            }
        }
Beispiel #16
0
        public override IEnumerable<string> Execute(IrcEventArgs e)
        {
            string args = "";

            if (e.Data.MessageArray.Length > 1)
                args = string.Join(" ", e.Data.MessageArray.Skip(1));

            args = args.Replace("\'", "");
            args = args.Replace(">", "");
            args = args.Replace("<", "");
            args = args.Replace("|", "");

            try
            {
                var proc = new System.Diagnostics.Process();
                proc.EnableRaisingEvents = false;
                proc.StartInfo.FileName = @"python";
                proc.StartInfo.Arguments = scriptPath + " \"" + args + "\"";
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
                proc.StartInfo.UseShellExecute = false;
                proc.StartInfo.StandardOutputEncoding = Encoding.UTF8;
                proc.Start();
                string data = proc.StandardOutput.ReadToEnd();
                proc.WaitForExit();

                return new[] {data};
            }
            catch
            {

            }

            return null;
        }
Beispiel #17
0
        public bool Parse(IrcConnection aConnection, IrcEventArgs aEvent)
        {
            string tMessage = Helper.RemoveSpecialIrcChars(aEvent.Data.Message);
            Log.Debug("Parse() " + aEvent.Data.Nick + " " + tMessage);

            return Parse(aConnection, tMessage, aEvent);
        }
Beispiel #18
0
        public override IEnumerable<string> Execute(IrcEventArgs e)
        {
            string url = "http://www.urbandictionary.com/define.php?term=" + e.Data.Message.Split(new char[] { ' ' }, 2).LastOrDefault(); // TODO: URL encode
            string html = "";

            try
            {
                html = HttpHelper.GetFromUrl(url);
            }
            catch
            {
                return new [] { "Error fetching result" };
            }

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
            HtmlNode node = doc.DocumentNode.SelectSingleNode("//div [@id = 'entries']/div [@class = 'box'][1]/descendant::div [@class = 'definition']");

            IList<string> lines = new List<string>();
            if (node != null && !string.IsNullOrWhiteSpace(node.InnerText))
            {
                var definition = node.InnerHtml
                    .Replace("<br>", " ")
                    .Replace("<br/>", " ")
                    .Replace("</br>", "")
                    .Replace("\n", "")
                    .Trim();

                lines.Add(("UrbanDictionary: " + WebUtility.HtmlDecode(definition)).FormatToIrc());
            }
            else
                lines.Add("No results found");

            return lines;
        }
Beispiel #19
0
        public override void Execute(IrcEventArgs args)
        {
            string nick = args.Data.Nick;
            string fullName = args.Data.From;

            if (args.Data.MessageArray.Length == 1)
            {
                PrintCommands(Bot.Commands, nick);

                if (Bot.AdminUserRepository.IsAdminUser(fullName))
                    PrintCommands(Bot.AdminCommands, nick);

                return;
            }

            if (args.Data.MessageArray.Length == 2)
            {
                if (!Bot.PluginManager.Plugins.Any(x => string.Equals(x.Name, args.Data.MessageArray[1], StringComparison.CurrentCultureIgnoreCase)))
                    throw new Exception(string.Format("Could not find the plugin with the name '{0}'",args.Data.MessageArray[1]));

                BotPlugin plugin = Bot.PluginManager.Plugins.Find(x => string.Equals(x.Name, args.Data.MessageArray[1]));

                PrintCommands(plugin.Commands, nick);

                if (Bot.AdminUserRepository.IsAdminUser(fullName))
                    PrintCommands(plugin.AdminCommands, nick);

                return;
            }

            throw new Exception("I'm not 100% sure what you were getting at by feeding me a ton of parameters...i'm just going to choke.");
        }
Beispiel #20
0
 public static void IrcClientListCallback(object sender, IrcEventArgs e)
 {
     if (e.Data.ReplyCode == ReplyCode.List) {
         Console.WriteLine("On the IRC channel "+CHANNEL+" are "+e.Data.RawMessageArray[4]+" users");
         e.Data.Irc.Disconnect();
     }
 }
Beispiel #21
0
        public override void Execute(IrcEventArgs e)
        {
            if (e.Data.MessageArray.Count() < 3)
            {
                e.Data.Irc.SendMessage(SendType.Message, e.Data.Nick, "Missing parameters");
                return;
            }

            User user = userService.GetAuthenticatedUser(e.Data.From);

            if (user != null && user.UserLevel == 10)
            {
                int userLevel = 1;
                if (e.Data.MessageArray.Count() > 3)
                    int.TryParse(e.Data.MessageArray[3], out userLevel);

                if (userService.CreateUser(e.Data.MessageArray[1], e.Data.MessageArray[2], userLevel) > 0)
                {
                    e.Data.Irc.SendMessage(SendType.Message, e.Data.Nick, "User created");
                }
                else
                {
                    e.Data.Irc.SendMessage(SendType.Message, e.Data.Nick, "User already exists");
                }
            }
            else
            {
                e.Data.Irc.SendMessage(SendType.Message, e.Data.Nick, "You do not have authorization to use this command");
                return;
            }
        }
Beispiel #22
0
        public static bool Load(string trigger, IrcEventArgs e, out IrcTrigger ircTrigger)
        {
            ircTrigger = new IrcTrigger();

            Regex regex = new Regex(string.Format(triggerFormat, trigger), RegexOptions.IgnoreCase);

            Match m = regex.Match(e.Data.Message);

            if(m.Success)
            {
                ircTrigger.Channel = e.Data.Channel;
                ircTrigger.Nick = e.Data.Nick;
                ircTrigger.Host = e.Data.Host;
                ircTrigger.Message = m.Groups["args"].Value;
                ircTrigger.Arguments =
                    (ircTrigger.Message.Length > 0 ?
                        ircTrigger.Message.Split(new char[] { ' ' }) :
                        new string[0]
                    );
                ircTrigger.Trigger = m.Groups["trigger"].Value;
                return true;
            }

            return false;
        }
Beispiel #23
0
        public override void ProcessMessage(IrcEventArgs e)
        {
            if (e.Data.MessageArray[0] == "!resetBlackjack")
            {
                Reset();
                return;
            }

            if (CurrentState == States.NO_GAME && (e.Data.MessageArray[0]=="!jack" || e.Data.MessageArray[0] == "!blackjack"))
            {
                //start new game

                currentPlayer = e.Data.Nick;

                Deal();
                CurrentState = States.CARDS_DEALT;

                TellPlayerOfHands();

            }
            else if (CurrentState == States.CARDS_DEALT && e.Data.Nick == currentPlayer)
            {
                ParseCommand(e);
            }
        }
Beispiel #24
0
        public void ExecuteCommands(IrcEventArgs ircEventArgs, List<IBotCommand> commands)
        {
            foreach (IBotCommand command in commands)
            {
                bool shouldExecuteCommand = false;

                try
                {
                    shouldExecuteCommand = command.ShouldExecuteCommand(ircEventArgs);
                }
                catch (Exception e)
                {
                    SendMessage(string.Format("Command threw and exception: {0}", e.Message), ircEventArgs.Data.Nick);
                }

                if (shouldExecuteCommand)
                {
                    try
                    {
                        command.Execute(ircEventArgs);
                    }
                    catch (Exception e)
                    {
                        SendMessage(e.Message, ircEventArgs.Data.Nick);

                        PrintHelpSyntaxForCommand(ircEventArgs, command);
                    }
                }
            }
        }
Beispiel #25
0
        public static void OnMessage(object sender, IrcEventArgs e)
        {
            string[] foulwords = new string[1];
            Console.ForegroundColor = ConsoleColor.Yellow;

            //highlighting
            if (e.Data.Message.Contains(Config.User) == true)
            {

                Console.ForegroundColor = ConsoleColor.Green;
                System.Console.WriteLine(e.Data.From + " : " + e.Data.Message);
            }
            else if (e.Data.From.Contains(Config.User) == true)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                System.Console.Write(e.Data.From + ": ");
                Console.ResetColor();
                Console.Write(e.Data.Message + "\n");
            }
            else if (foulwords.Any(p => e.Data.Message.Contains(p)))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                System.Console.Write(e.Data.From + ": ");
                Console.ResetColor();
                Console.Write(e.Data.Message + "\n");
            }
            else
            {
                System.Console.Write(e.Data.From + ": ");
                Console.ResetColor();
                Console.Write(e.Data.Message + "\n");
            }
        }
Beispiel #26
0
        public override void Execute(IrcEventArgs e)
        {
            string message = "";

            // If parameter is given, show help message of command <parameter>
            if (e.Data.MessageArray.Count() > 1 && commands.ContainsKey(commandIdentifier + e.Data.MessageArray[1]))
                message = commands[commandIdentifier + e.Data.MessageArray[1]].Name + ": " + commands[commandIdentifier + e.Data.MessageArray[1]].Help;
            else
            {
                // Else list available commands
                message = "Available commands: ";
                foreach (ICommand command in commands.Values.Distinct())
                {
                    message += command.Name;

                    if (command.Aliases != null)
                        message += " (" + string.Join(", ", command.Aliases) + ")";

                    if (command != commands.Values.Last())
                        message += ", ";
                }
            }

            e.Data.Irc.SendMessage(SendType.Message, e.Data.Channel, message);
        }
Beispiel #27
0
        public static void banned_word_check(object sender, IrcEventArgs e)
        {
            if (badwords.Contains(e.Data.Message))
            {
                if (InDB(e.Data.Nick, settings.serverlist, e.Data.Channel) == false)
                {
                   int i = rng.Next(kickreasons.Length + 1);
                    InsertEntry(e.Data.Nick, settings.serverlist, e.Data.Channel);
                    irc.RfcKick(e.Data.Channel, e.Data.Nick, kickreasons[i]);
                }

                else
                {
                    if (GetKicks(e.Data.Nick, e.Data.Channel, settings.serverlist) >= 5) //ban nick if kicked 5 times.
                    {

                        irc.Ban(e.Data.Channel, e.Data.Host);
                        irc.RfcKick(e.Data.Channel, e.Data.Nick, "banned");
                    }
                    else
                    {
                        int i = rng.Next(kickreasons.Length + 1);
                       irc.RfcKick(e.Data.Channel, e.Data.Nick, kickreasons[i]);
                        UpdateKicks(e.Data.Nick, settings.serverlist, e.Data.Channel);
                    }

                }
            }
        }
Beispiel #28
0
        public override IEnumerable<string> Execute(IrcEventArgs e)
        {
            string nick = "";
            string message = "";

            if (e.Data.MessageArray.Count() > 1)
            {
                nick = e.Data.MessageArray[1];
            }
            else
            {
                nick = store.GetUserSetting<string>(e.Data.Nick, "LastfmUsername");

                if (string.IsNullOrWhiteSpace(nick))
                    nick = e.Data.Nick;
            }

            log.Info("Fetching now playing information for user \"" + nick + "\"");

            try
            {
                message = FetchNowPlayingInfo(nick);
            }
            catch (Exception)
            {
                return new string[0];
            }

            return new[] { message };
        }
        public override void Execute(IrcEventArgs args)
        {
            string channel = args.Data.Channel;
            var currentGame = TriviaPlugin.GetGameForChannel(channel);

            if (currentGame != null && currentGame.GameStarted)
            {
                if (!currentGame.UsersAttempted.Contains(args.Data.From)
                    || currentGame.CurrentQuestion.Answers.Count == 1)
                {
                    if (IsCorrectAnswer(args.Data.Message, currentGame.CurrentQuestion))
                    {
                        string cAnswer = currentGame.CurrentQuestion.GetCorrectAnswer().AnswerText;
                        currentGame.SendMessage(channel, string.Format("Correct! {0} got the answer right! It was: {1}", MessageFormatting.MakeNavyBlue(args.Data.Nick), MessageFormatting.MakeHotPink(cAnswer)));
                        //todo give the dude some points
                        currentGame.GotoNextQuestion();
                    }
                    else
                    {
                        if (!currentGame.UsersAttempted.Contains(args.Data.From))
                            currentGame.UsersAttempted.Add(args.Data.From);
                    }
                }
            }
        }
Beispiel #30
0
 public void OnRawMessage(object sender, IrcEventArgs e)
 {
     AddItemToLog("Received: " + e.Data.RawMessage);
     if (e.Data.Type == ReceiveType.ChannelMessage)
     {
         nummsg = nummsg + 1;
     }
 }
Beispiel #31
0
 private void _ircClient_OnPrivmsg(object sender, SIRC4N.IrcEventArgs e)
 => PrivMessageReceived?.Invoke(new PrivMessage()
 {
     ChannelName  = e.Data.Channel,
     Text         = e.Data.Message,
     UserHostName = e.Data.Host,
     UserName     = e.Data.Nick
 });
Beispiel #32
0
        public static void OnQueryMessage(object sender, IrcEventArgs e)
        {
            switch (e.Data.MessageArray[0])
            {
                    // debug stuff
                case "dump_channel":
                    string requested_channel = e.Data.MessageArray[1];
                    // getting the channel (via channel sync feature)
                    Channel channel = irc.GetChannel(requested_channel);

                    // here we send messages
                    irc.SendMessage(SendType.Message, e.Data.Nick, "<channel '" + requested_channel + "'>");

                    irc.SendMessage(SendType.Message, e.Data.Nick, "Name: '" + channel.Name + "'");
                    irc.SendMessage(SendType.Message, e.Data.Nick, "Topic: '" + channel.Topic + "'");
                    irc.SendMessage(SendType.Message, e.Data.Nick, "Mode: '" + channel.Mode + "'");
                    irc.SendMessage(SendType.Message, e.Data.Nick, "Key: '" + channel.Key + "'");
                    irc.SendMessage(SendType.Message, e.Data.Nick, "UserLimit: '" + channel.UserLimit + "'");

                    // here we go through all users of the channel and show their
                    // hashtable key and nickname
                    string nickname_list = "";
                    nickname_list += "Users: ";
                    foreach (DictionaryEntry de in channel.Users)
                    {
                        string key = (string) de.Key;
                        ChannelUser channeluser = (ChannelUser) de.Value;
                        nickname_list += "(";
                        if (channeluser.IsOp)
                        {
                            nickname_list += "@";
                        }
                        if (channeluser.IsVoice)
                        {
                            nickname_list += "+";
                        }
                        nickname_list += ")" + key + " => " + channeluser.Nick + ", ";
                    }
                    irc.SendMessage(SendType.Message, e.Data.Nick, nickname_list);

                    irc.SendMessage(SendType.Message, e.Data.Nick, "</channel>");
                    break;
                case "gc":
                    GC.Collect();
                    break;
                    // typical commands
                case "join":
                    irc.RfcJoin(e.Data.MessageArray[1]);
                    break;
                case "part":
                    irc.RfcPart(e.Data.MessageArray[1]);
                    break;
                case "die":
                    Exit();
                    break;
            }
        }
Beispiel #33
0
 private void _ircClient_OnRawMessage(object sender, SIRC4N.IrcEventArgs e)
 => MessageReceived?.Invoke($"RAW: {e.Data.RawMessage}");
Beispiel #34
0
 private void MeebyIrc_OnErrorMessage(object sender, Meebey.SmartIrc4net.IrcEventArgs e)
 {
     parent.ThreadSafeAddPreviewText("! " + e.Data.Message + " !", LineType.IrcCommand);
 }