예제 #1
0
        public IrcConnection(IrcConnectionInfo ircConnectionInfo)
        {
            IrcConnectionInfo = ircConnectionInfo;

            var connectionName = $"{ircConnectionInfo.Server}:{ircConnectionInfo.Nick}";

            if (!ConnectionPool.ContainsKey(connectionName))
            {
                IrcClient = new StandardIrcClient();
                IrcClient.RawMessageReceived   += Irc_RawMessageReceived;
                IrcClient.ErrorMessageReceived += Irc_ErrorMessageReceived;
                IrcClient.Connected            += Irc_Connected;
                IrcClient.ConnectFailed        += Irc_ConnectFailed;
                IrcClient.MotdReceived         += Irc_MotdReceived;
                IrcClient.Connect(ircConnectionInfo.Server, ircConnectionInfo.Port, false, ircConnectionInfo.GetRegistrationInfo());

                // Wait for event handlers to authenticate and join the channel
                Thread.Sleep(30 * 1000);

                ConnectionPool.Add(connectionName, IrcClient);
            }
            else
            {
                IrcClient = ConnectionPool[connectionName];
                IrcClient.LocalUser.JoinedChannel += Irc_JoinedChannel;
                JoinIrcChannel();
            }
        }
예제 #2
0
        private static async Task LoadChannel(DiscordConnectionInfo discordInfo, IrcConnectionInfo ircInfo)
        {
            var pair = new ChannelPair(new IrcConnection(ircInfo)
            {
                EnableConsoleLogging = WriteToConsole
            }, discordInfo)
            {
                EnableConsoleLogging = WriteToConsole
            };

            if (WriteToConsole)
            {
                Console.WriteLine("Connecting...");
            }
            await pair.Connect();

            if (WriteToConsole)
            {
                Console.WriteLine("Ready.");
            }
            Pairs.Add(pair);
        }