Inheritance: IDisposable
コード例 #1
0
        public bool handleURL(string url, IrcClient ctx, CtcpClient ctpcclient = null, IIrcMessageSource source = null )
        {
            var title = GetPageTitle(url).Trim();
            if (!string.IsNullOrWhiteSpace(title))
            {
                if(title.ToLower().Contains("Domainpark - Bitte den Rasen nicht betreten".ToLower()))
                {
                    int roll = random.Next(0, 101);
                    if(roll < 5)
                    {
                        if(ctpcclient != null)
                        {
                            string textMessage = "slaps " + source.Name + " and screamed:";
                            BotDeathmicMessageTarget target = new BotDeathmicMessageTarget();
                            target.Name = Properties.Settings.Default.Channel.ToString();
                            ctpcclient.SendAction(target, textMessage);
                            ctx.LocalUser.SendMessage(Properties.Settings.Default.Channel, "Runter vom Rasen!");
                        }
                    }
                }
                else
                {
                    if(title.ToLower() == "Imgur: The most awesome images on the Internet".ToLower())
                    {

                    }
                    else
                    {
                        ctx.LocalUser.SendMessage(Properties.Settings.Default.Channel, title);
                    }

                }
            }
            return true;
        }
コード例 #2
0
        public void Execute(IrcClient Client, string channel, IrcUser Sender, string message)
        {
            message = message.Trim();
            if (message == "")
            {
                Client.LocalUser.SendMessage(channel, horoscopeHelpMsg());
            }
            else
            {

                if (!signs.ContainsKey(message))
                {
                    Client.LocalUser.SendMessage(channel, "Why won't you give me a sign~");
                    return;
                }

                string html = getHTML(signs[message]);

                string horoscope = dropHtmlPrecedingHoroscope(html, message);
                horoscope = dropHtmlTailingHoroscope(horoscope);
                horoscope = html2Txt(horoscope);

                Client.LocalUser.SendMessage(channel, horoscope);
            }
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: destinygg/bot
        private static void HandleEventLoop(IrcClient client)
        {
            _ircLocaluser = client.LocalUser;
              _hostNameToWebSockets.Add("", new WebSocketListenerClient(PrivateConstants.TestAccountWebsocketAuth));
              _hostNameToWebSockets[""].Run(sendToIrcProcessor);

              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 '{command}'");
              }
            }
            break;
            }
              }
              client.Disconnect();
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: serverkomplex/IrcDotNet
        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();
        }
コード例 #5
0
ファイル: Bot.cs プロジェクト: redfoxprojects/FoxBot
        public void Connect()
        {
            this.client = new IrcClient();
            this.client.ErrorMessageReceived += client_ErrorMessageReceived;
            this.client.Connected            += client_Connected;
            this.client.RawMessageReceived   += client_RawMessageReceived;
            this.client.ConnectFailed        += client_ConnectFailed;
            this.client.MotdReceived         += client_MotdReceived;
            this.client.Error         += client_Error;
            this.client.ProtocolError += client_ProtocolError;
            this.client.Disconnected  += client_Disconnected;
            this.client.NetworkInformationReceived += client_NetworkInformationReceived;
            this.client.ClientInfoReceived         += client_ClientInfoReceived;
            this.client.ValidateSslCertificate     += client_ValidateSslCertificate;
            IrcUserRegistrationInfo serviceReg = new IrcUserRegistrationInfo();

            serviceReg.RealName = REALNAME;
            serviceReg.UserName = USERNAME;
            serviceReg.NickName = this.Nick;
            serviceReg.Password = "";
            this.client.Connect(this.server, 6667, false, serviceReg);

            while (!isQuitting)
            {
                Thread.Sleep(10000);
            }
        }
コード例 #6
0
ファイル: IrcHelper.cs プロジェクト: djeebus/MusicHub
 public static void SayInChannels(IrcClient client, string msg)
 {
     foreach (var channel in client.Channels)
     {
         client.LocalUser.SendMessage(channel, msg);
     }
 }
コード例 #7
0
 public ChannelSearchViewModel(IrcClient client)
 {
     this.client = client;
       this.allChannels = new List<BindableChannelInfo>();
       this.Channels = new BindableCollection<BindableChannelInfo>();
       this.client.ChannelListReceived += ircClient_ChannelListReceived;
       this.DisplayName = "Join Channel";
 }
コード例 #8
0
ファイル: BaseCommand.cs プロジェクト: djeebus/MusicHub
 protected void InvalidSyncLibraryCommand(
     IrcClient client, 
     IList<IIrcMessageTarget> replyTarget, 
     string commandError)
 {
     client.LocalUser.SendMessage(replyTarget, string.Format("Invalid .sync-command: {0}", commandError));
     client.LocalUser.SendMessage(replyTarget, "Usage: .sync-library library-guid");
 }
コード例 #9
0
ファイル: Client.cs プロジェクト: code-n-beer/SimoBot
        public Client(Server server)
        {
            client = new IrcClient();
            this.server = server;

            channels = getChannels(server);

            SetEventHandlers();
            findClientConfs();
        }
コード例 #10
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="twitchUsername"></param>
        /// <param name="twitchOAuthToken">
        /// A chat login token which can be generated here: http://www.twitchapps.com/tmi/
        /// </param>
        public void Start(string twitchUsername, string twitchOAuthToken)
        {
            var client = new IrcClient();

            client.Connected += client_Connected;
            client.ChannelListReceived += client_ChannelListReceived;
            client.RawMessageReceived += client_RawMessageReceived;

            client.Connect("irc.twitch.tv", 6667, false, new IrcUserRegistrationInfo() {NickName = twitchUsername, Password = twitchOAuthToken, UserName = twitchUsername, RealName = twitchUsername});
        }
コード例 #11
0
        public ActionResult Irc()
        {
            var api = new AppHarborApi(new AuthInfo { AccessToken = ConfigurationManager.AppSettings["authToken"] });

            var latestBuild = api.GetBuilds(Constants.AppHarborAppName).First();
            var testResults = api.GetTests(Constants.AppHarborAppName, latestBuild.ID);
            List<AppHarbor.Model.Test> allTests = new List<AppHarbor.Model.Test>();

            foreach (var testresult in testResults)
            {
                FillTests(allTests, testresult);
            }

            AutoResetEvent are = new AutoResetEvent(false);
            IrcDotNet.IrcClient client = new IrcDotNet.IrcClient();

            try
            {
                client.Connect("irc.gamesurge.net", false, new IrcUserRegistrationInfo() { NickName = "crymono-build", RealName = "crymono", UserName = "******" });

                client.ClientInfoReceived += (s, e) => are.Set();

                are.WaitOne();

                client.Channels.Join(new string[] { "#crymono" });

                Thread.Sleep(200);
                string msg = latestBuild.Commit.Message.Replace("\n", "").Replace("\r", "");

                client.LocalUser.SendMessage("#crymono", "Build finished, latest commit: " + msg);
                Thread.Sleep(200);

                int numPassedTests = allTests.Count(t => t.Status == "Passed");
                float percentage = (float)numPassedTests / allTests.Count * 100;
                client.LocalUser.SendMessage("#crymono", String.Format("Test results: {0} of {1} passed ({2:0}%) - http://crymono.apphb.com/#!/{3} - AppHB: https://appharbor.com/applications/crymonobuild/builds/{3}/tests",
                    numPassedTests,
                    allTests.Count,
                    percentage,
                    latestBuild.ID
                    ));
                Thread.Sleep(200);

            }
            finally
            {
                if (client != null && client.IsConnected)
                {
                    client.Quit("to the hills!");
                    Thread.Sleep(200);
                    client.Disconnect();
                }
            }

            return Content("OK");
        }
コード例 #12
0
        /// <summary>
        /// Initializes a new instance of the IrcChannelViewModel class
        /// </summary>
        public IrcStatusTabViewModel(IrcClient client)
        {
            this.Messages = new BindableCollection<Message>();
              this.Closable = false;
              this.DisplayName = "Status";
              this.Client = client;

              this.Client.LocalUser.MessageReceived += this.localUserMessageReceived;
              this.Client.MotdReceived += this.clientMessageOfTheDayReceived;
              this.Client.WhoIsReplyReceived += this.clientWhoIsReplyReceived;
        }
コード例 #13
0
 public IrcMessageCommand(
     IrcBot bot, 
     IrcBotUser user,
     IrcClient client, 
     string[] parameters, 
     IIrcMessageTarget target, 
     IIrcMessageSource source
 )
     : base(bot, user, client, parameters, target, source)
 {
 }
コード例 #14
0
ファイル: IrcQueryViewModel.cs プロジェクト: schwarz/handle
 public IrcQueryViewModel(IrcUser user, IrcClient client, Settings settings)
 {
     this.Settings = settings;
       this.User = user;
       this.client = client;
       this.DisplayName = user.NickName;
       this.Messages = new BindableCollection<Message>();
       this.Closable = true;
       // TODO
       this.client.LocalUser.MessageReceived += this.messageReceived;
 }
コード例 #15
0
ファイル: BasicIrcBot.cs プロジェクト: gkinsman/StatsBot
        private void ProcessChatCommandHelp(IrcClient client, IIrcMessageSource source,
            IList<IIrcMessageTarget> targets, string command, IList<string> parameters)
        {
            if (parameters.Count != 0)
                throw new InvalidCommandParametersException(0);

            // List all commands recognized by this bot.
            var replyTarget = GetDefaultReplyTarget(client, source, targets);
            client.LocalUser.SendMessage(replyTarget, "Commands recognized by bot:");
            client.LocalUser.SendMessage(replyTarget, string.Join(", ",
                this.ChatCommandProcessors.Select(kvPair => kvPair.Key)));
        }
コード例 #16
0
ファイル: IrcBot.cs プロジェクト: koushikajay/Alfred
        public IrcBot(IrcBotConfiguration configuration)
        {
            this.tasks = new List<IIrcTask>();
            this.users = new ConcurrentDictionary<string, IrcBotUser>();

            configuration.UserName = configuration.UserName ?? configuration.NickName;
            configuration.RealName = configuration.RealName?? configuration.NickName;

            this.Configuration = configuration;

            this.commandPrefix = string.Format("{0}", this.Configuration.NickName.ToLower());

            this.client = new IrcClient();
        }
コード例 #17
0
ファイル: RawIrcBot.cs プロジェクト: bremnes/IrcBot
 public void ConnectAndSetup()
 {
     _client = new IrcClient();
     _client.Connect("irc.homelien.no", 6667, false, new IrcUserRegistrationInfo
         {
             NickName = "testL",
             UserName = "******",
             RealName = "LarsBot"
         });
     _client.Connected += ClientOnConnected;
     _client.Disconnected += _client_Disconnected;
     _client.RawMessageReceived += _client_RawMessageReceived;
     _client.Error += ClientOnError;
     _client.ErrorMessageReceived += ClientOnErrorMessageReceived;
 }
コード例 #18
0
        public INetwork Connect(INetwork network, IUser user)
        {
            IrcClient ircClient = new IrcClient();
            INetwork connection = this.RegisterNetwork(ircClient, network);

            this.OnNetworkAdded(connection);

            ircClient.Connect(network.Url.Host, network.Url.Port, false, new IrcUserRegistrationInfo()
            {
                NickName = user.Nickname,
                RealName = user.Realname,
                UserName = user.Nickname,
            });

            return network;
        }
コード例 #19
0
ファイル: BaseChatCommand.cs プロジェクト: bremnes/IrcBot
        public void Run(IrcClient client, IIrcMessageSource source, IList<IIrcMessageTarget> targets, string command, IList<string> parameters)
        {
            Client = client;
            SourceUser = (IrcUser)source;
            Command = command;
            Parameters = parameters;

            if (targets.Contains(Client.LocalUser) && source != null)
                ReplyTargets = new[] { (IIrcMessageTarget)source };
            else
            {
                ReplyTargets = targets;
            }

            Run();
        }
コード例 #20
0
ファイル: SpeedRunsLiveIRC.cs プロジェクト: 0xwas/LiveSplit
 public SpeedRunsLiveIRC(LiveSplitState state, ITimerModel model, IEnumerable<string> channels)
 {
     ChannelsToJoin = channels.ToList();
     Client = new IrcClient();
     Client.ConnectFailed += Client_ConnectFailed;
     Client.Connected += Client_Connected;
     Client.Registered += Client_Registered;
     Client.RawMessageReceived += Client_RawMessageReceived;
     Client.ConnectFailed += Client_ConnectFailed;
     Client.Disconnected += Client_Disconnected;
     Model = model;
     state.OnSplit += Model_OnSplit;
     state.OnUndoSplit += Model_OnUndoSplit;
     state.OnReset += Model_OnReset;
     RaceState = RaceState.NotInRace;
 }
コード例 #21
0
ファイル: TwitchChat.cs プロジェクト: Rezura/LiveSplit
        public TwitchChat(string accessToken, string channel)
        {
            Client = new IrcClient();
            UserFlags = new Dictionary<string, ChatBadges>();
            UserColors = new Dictionary<string, Color>();
            var twitch = Twitch.Instance;
            Client.Connected += Client_Connected;
            Client.Registered += Client_Registered;
            Channel = channel;

            Client.Connect("irc.twitch.tv", 6667,
                new IrcUserRegistrationInfo()
                {
                    NickName = twitch.ChannelName,
                    Password = $"oauth:{accessToken}"
                });
        }
コード例 #22
0
ファイル: IrcCommand.cs プロジェクト: koushikajay/Alfred
        public IrcCommand(
            IrcBot bot, 
            IrcBotUser user,
            IrcClient client, 
            string[] parameters, 
            IIrcMessageTarget target, 
            IIrcMessageSource source
        )
        {
            this.Bot = bot;
            this.User = user;
            this.Client = client;
            this.Target = target;
            this.Source = source;

            ParseParameters(parameters);
        }
コード例 #23
0
ファイル: UguuFeature.cs プロジェクト: kenkku/SimoBot
        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);
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: jonbonne/OCTGN
 static void Main(string[] args)
 {
     client = new IrcClient();
     var reg = new IrcUserRegistrationInfo();
     reg.NickName = "botctgn";
     reg.UserName = "******";
     reg.RealName = "botctgn";
     client.Connect("irc.freenode.net",6667,false,reg);
     client.Disconnected += ClientOnDisconnected;
     client.Connected += ClientOnConnected;
     client.ErrorMessageReceived += ClientOnErrorMessageReceived;
     client.MotdReceived += ClientOnMotdReceived;
     client.RawMessageReceived += ClientOnRawMessageReceived;
     client.ChannelListReceived += ClientOnChannelListReceived;
     client.ProtocolError += ClientOnProtocolError;
     while (!closingTime)
     {
         Thread.Sleep(10);
     }
 }
コード例 #25
0
ファイル: IRCListener.cs プロジェクト: taimur38/Yaar
        public override void Loop()
        {
            while(true)
               {
               using (var mre = new ManualResetEvent(false))
               {
                   if(_client != null)
                       _client.Disconnect();

                   _client = new IrcClient();
                   _client.Registered += (sender, args) =>
                                        {
                                            _client.LocalUser.JoinedChannel += (sender1, args1) =>
                                            {
                                                args1.Channel.MessageReceived += (o, eventArgs) =>
                                                {
                                                    if (eventArgs.Source.Name == "Taimur")
                                                        Handle(eventArgs.Text);
                                                };

                                                Output("Joined " + args1.Channel.Name);
                                                mre.Set();
                                            };

                                            _client.Channels.Join("#yaar");
                                        };

                   _client.Connect("irc.rizon.net", 6667, false, new IrcUserRegistrationInfo()
                                                                     {
                                                                         NickName = "[Yaar]",
                                                                         UserName = "******",
                                                                         RealName = "[Yaar]"
                                                                     });
                   mre.WaitOne(30.Seconds());
                   while(_client.IsConnected)
                       5.Seconds().Sleep();
               }
               Brain.ListenerManager.CurrentListener.Output("Failed to connect to Rizon.");
               }
        }
コード例 #26
0
        private void ReadChatCommand(IrcClient client, IIrcMessageSource source, IList <IIrcMessageTarget> targets,
                                     string command, string[] parameters)
        {
            var defaultReplyTarget = GetDefaultReplyTarget(client, source, targets);

            ChatCommandProcessor processor;

            if (this.chatCommandProcessors.TryGetValue(command, out processor))
            {
                System.Threading.Tasks.Task.Factory.StartNew(() =>
                {
                    try
                    {
                        processor(client, source, targets, command, parameters);
                    }
                    catch (InvalidCommandParametersException exInvalidCommandParameters)
                    {
                        client.LocalUser.SendNotice(defaultReplyTarget,
                                                    exInvalidCommandParameters.GetMessage(command));
                    }
                    catch (Exception ex)
                    {
                        if (source is IIrcMessageTarget)
                        {
                            client.LocalUser.SendNotice(defaultReplyTarget,
                                                        "Error processing '{0}' command: {1}", command, ex.Message);
                        }
                    }
                }, System.Threading.Tasks.TaskCreationOptions.LongRunning);
            }
            else
            {
                if (source is IIrcMessageTarget)
                {
                    client.LocalUser.SendNotice(defaultReplyTarget, "Command '{0}' not recognized.", command);
                }
            }
        }
コード例 #27
0
ファイル: bot.cs プロジェクト: quiznilo/Zerobot
        protected override void OnClientConnect(IrcClient client)
        {
            // Sort out which server/client is which... this really only needs to be done once
            foreach (server aServ in conf.servers) {
                if (aServ.uName == client.LocalUser.UserName) {
                    client.ClientId = aServ.uName;
                    Console.WriteLine("Client {0} identified and tagged", client.ClientId);
                }
            }

            // Autojoin Chans
            //TODO: fix this to pull from conf files
            //	client.Channels.Join("#b0tcage");
            //client.Channels.Join("#gentoo-pr0n");
            //			foreach (server aServ in conf.servers) {
            //				foreach (channel chan in aServ.channels) {
            //					client.Channels.Join("#" + chan.chanName);
            //					Console.WriteLine("Joining: {0} on {1}", chan.chanName, aServ.pName);
            //				}
            //			}

            //			foreach (server aServ in conf.servers) {
            //				if (client.LocalUser.UserName == aServ.uName) {
            //					Console.WriteLine("Server {0} is matched", aServ.uName);
            //				}
            //			}
            foreach (server aServ in conf.servers) {
                if (client.ClientId == aServ.uName) {
                    foreach (channel chan in aServ.channels) {
                        client.Channels.Join("#" + chan.chanName);
                        Console.WriteLine("Joining: {0}({1}) -- Logging: {2}, Active: {3}, Color: {4}",
                            chan.chanName, client.ClientId, chan.log, chan.active, chan.sCol);
                    }
                }
            }
            Console.WriteLine("Clients count: {0}", this.Clients.Count+1);
        }
コード例 #28
0
        private void ProcessChatCommandSend(IrcClient client, IIrcMessageSource source,
            IList<IIrcMessageTarget> targets, string command, IList<string> parameters)
        {
            var sourceUser = (IrcUser)source;
            var twitterBotUser = GetTwitterBotUser(sourceUser);

            if (parameters.Count != 1)
                throw new InvalidCommandParametersException(1);

            // Send tweet from user.
            var tweetStatus = twitterBotUser.SendTweet(parameters[0].TrimStart());
            var replyTargets = GetDefaultReplyTarget(client, sourceUser, targets);
            client.LocalUser.SendMessage(replyTargets, "Tweet sent by {0} at {1}.", tweetStatus.User.ScreenName,
                tweetStatus.CreatedDate.ToLongTimeString());
        }
コード例 #29
0
        private void ProcessChatCommandLogOut(IrcClient client, IIrcMessageSource source,
            IList<IIrcMessageTarget> targets, string command, IList<string> parameters)
        {
            var sourceUser = (IrcUser)source;
            var twitterBotUser = GetTwitterBotUser(sourceUser);

            if (parameters.Count != 0)
                throw new InvalidCommandParametersException(1);

            // Log out Twitter user.
            twitterBotUser.LogOut();
            this.twitterUsers.Remove(twitterBotUser);

            var replyTargets = GetDefaultReplyTarget(client, sourceUser, targets);
            client.LocalUser.SendMessage(replyTargets, "You are now logged out.");
        }
コード例 #30
0
        private void ProcessChatCommandLogIn(IrcClient client, IIrcMessageSource source,
            IList<IIrcMessageTarget> targets, string command, IList<string> parameters)
        {
            var sourceUser = (IrcUser)source;
            var twitterUser = this.twitterUsers.SingleOrDefault(tu => tu.IrcUser == sourceUser);
            if (twitterUser != null)
                throw new InvalidOperationException(string.Format(
                    "User '{0}' is already logged in to Twitter as {1}.", sourceUser.NickName,
                    twitterUser.TwitterUser.ScreenName));

            if (parameters.Count != 2)
                throw new InvalidCommandParametersException(1);

            // Create new Twitter user and log in.
            var twitterBotUser = new TwitterBotUser(sourceUser);
            twitterBotUser.LogIn(parameters[0], parameters[1]);
            this.twitterUsers.Add(twitterBotUser);

            var replyTargets = GetDefaultReplyTarget(client, sourceUser, targets);
            client.LocalUser.SendMessage(replyTargets, "You are now logged in as {0} / '{1}'.",
                twitterBotUser.TwitterUser.ScreenName, twitterBotUser.TwitterUser.Name);
        }
コード例 #31
0
        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();
        }
コード例 #32
0
 internal IrcUserCollection(IrcClient client, IList <IrcUser> list)
     : base(list)
 {
     this.client = client;
 }
コード例 #33
0
 protected override void OnClientDisconnect(IrcClient client)
 {
     //
 }
コード例 #34
0
        public static void WriteIrcRawLine(IrcClient client, string line)
        {
#if DEBUG
            WriteEvent("({0}) {1}", client.ClientId, line);
#endif
        }
コード例 #35
0
 internal IrcChannelCollection(IrcClient client, ObservableCollection <IrcChannel> list)
     : base(list)
 {
     this.client = client;
 }
コード例 #36
0
 protected override void OnClientRegistered(IrcClient client)
 {
     //
 }
コード例 #37
0
 protected override void OnClientDisconnect(IrcClient client)
 {
     //
 }
コード例 #38
0
 private void SendTweetInfo(IrcClient client, IList <IIrcMessageTarget> targets, TwitterStatus tweet)
 {
     client.LocalUser.SendMessage(targets, "@{0}: {1}", tweet.User.ScreenName,
                                  SanitizeTextForIrc(tweet.Text));
 }
コード例 #39
0
        private void ProcessChatCommandMentions(IrcClient client, IIrcMessageSource source,
            IList<IIrcMessageTarget> targets, string command, IList<string> parameters)
        {
            var sourceUser = (IrcUser)source;
            var twitterBotUser = GetTwitterBotUser(sourceUser);

            if (parameters.Count != 0)
                throw new InvalidCommandParametersException(1);

            // List tweets on Home timeline of user.
            var replyTargets = GetDefaultReplyTarget(client, sourceUser, targets);
            client.LocalUser.SendMessage(replyTargets, "Recent tweets mentioning '{0}':",
                twitterBotUser.TwitterUser.ScreenName);
            foreach (var tweet in twitterBotUser.ListTweetsMentioningMe())
            {
                SendTweetInfo(client, replyTargets, tweet);
            }
        }
コード例 #40
0
 protected virtual void OnClientDisconnect(IrcClient client)
 {
 }
コード例 #41
0
 private void SendTweetInfo(IrcClient client, IList<IIrcMessageTarget> targets, TwitterStatus tweet)
 {
     client.LocalUser.SendMessage(targets, "@{0}: {1}", tweet.User.ScreenName, tweet.Text);
 }
コード例 #42
0
 protected virtual void OnClientRegistered(IrcClient client)
 {
 }
コード例 #43
0
 protected override void OnClientRegistered(IrcClient client)
 {
     //
 }
コード例 #44
0
 internal IrcChannelCollection(IrcClient client, IList <IrcChannel> list)
     : base(list)
 {
     this.client = client;
 }