Exemple #1
0
        private async Task IrcMessageReceived(object sender, IrcMessageRecievedEventArgs e)
        {
            //Console.WriteLine($"{e.Prefix,-64}{e.Command,-16}{e.Parameters}");
            switch (e.Command)
            {
            case "001":
                Connected?.Invoke(this);
                break;

            case "PING":
                await ircClient.SendIrcMessage("PONG :tmi.twitch.tv");

                break;

            case "PRIVMSG":
                ChatMessageReceived?.Invoke(this, new ChatMessageReceivedEventArgs(this, e.Prefix, e.Parameters));
                break;

            case "JOIN":
                TwitchChannel channel = new TwitchChannel(e.Parameters.Replace("#", null), this);
                joinedChannels.Add(channel);
                ChannelJoined?.Invoke(this, new ChannelJoinedEventArgs(channel));
                break;
            }
        }
Exemple #2
0
 public ChatMessageReceivedEventArgs(TwitchIrcClient client, string prefix, string param)
 {
     IrcUser = prefix;
     User    = prefix.Remove(prefix.IndexOf('!'));
     string[] paramSplit = param.Split(" :");
     Channel = client.GetChannel(paramSplit[0].Replace("#", null));
     Content = paramSplit[1];
 }
Exemple #3
0
        private async Task TryProcessCommand(TwitchClient tcl, TwitchChannel channel, string content)
        {
            if (content.StartsWith(prefixChar))
            {
                string[] split   = content.Split(" ");
                string   command = split[0].Replace("!", null);
                if (channel.CustomCommands.Exists(x => x.Key == command))
                {
                    CustomTwitchCommandInfo c = channel.CustomCommands.Find(x => x.Key == command);
                    await channel.SendChatMessage(c.Value);
                }
                else if (commandList.ContainsKey(command))
                {
                    MethodInfo m = commandList[command];

                    TwitchCommandModule tcm = (TwitchCommandModule)Activator.CreateInstance(m.DeclaringType);
                    tcm.Channel = channel;
                    tcm.Client  = tcl;

                    int parametersLength = m.GetParameters().Length;

                    object[] paramaters = new object[parametersLength];

                    for (int i = 0; i < parametersLength; ++i)
                    {
                        ParameterInfo p = m.GetParameters()[i];
                        Type          t = p.ParameterType;

                        if (i < split.Length - 1)
                        {
                            switch (t.Name)
                            {
                            case "String":
                                paramaters[i] = split[i + 1];
                                break;

                            case "String[]":
                                paramaters[i] = split.Skip(i + 1).ToArray();
                                break;

                            case "Int32":
                                paramaters[i] = int.Parse(split[i + 1]);
                                break;
                            }
                        }
                        else
                        {
                            paramaters[i] = p.DefaultValue;
                        }
                    }

                    m.Invoke(tcm, paramaters);
                }
            }
        }
Exemple #4
0
 public ChannelJoinedEventArgs(TwitchChannel chan)
 {
     Channel = chan;
 }
Exemple #5
0
 public async Task PartChannel(TwitchChannel channel)
 {
     await client.PartChannel(channel.Channel);
 }