コード例 #1
0
        public static void Send(DotaChatHook.ChatMessage dotaChat)
        {
            if (DoNotSend(dotaChat))
            {
                return;
            }

            ProcessChat(dotaChat);
        }
コード例 #2
0
        public static bool DoNotSend(DotaChatHook.ChatMessage dotaChat)
        {
            if (dotaChat.Type == "DOTA_Chat_All" && AllEnabled == true)
            {
                return(false);
            }

            if (dotaChat.Type == "DOTA_Chat_Team" && AlliesEnabled == true)
            {
                return(false);
            }

            if (EnabledUsers.ContainsKey(dotaChat.Username))
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #3
0
        private static bool ProcessChat(DotaChatHook.ChatMessage dotaChat)
        {
            var user = EnabledUsers[dotaChat.Username];



            if (dotaChat.Message.StartsWith("@"))
            {
                if (!CheckTime(user) && user.Admin == false)
                {
                    return(true);
                }
                string message        = dotaChat.Message.Substring(1);
                var    discordMessage = new DiscordMessage()
                {
                    content = message, tts = false, username = dotaChat.Username
                };
                user.LastUsed = DateTime.Now;
                Send(discordMessage);
                return(true);
            }

            if (dotaChat.Message.StartsWith("!"))
            {
                if (!CheckTime(user))
                {
                    return(true);
                }
                user.LastUsed = DateTime.Now;
                string message = dotaChat.Message.Substring(1);
                if (EnabledUsers[dotaChat.Username].MangoMode)
                {
                    var discordMessage = new DiscordMessage()
                    {
                        content = "?smarttts " + message, tts = false, username = dotaChat.Username
                    };
                    Send(discordMessage);
                }
                else
                {
                    var discordMessage = new DiscordMessage()
                    {
                        content = message, tts = true, username = dotaChat.Username
                    };
                    Send(discordMessage);
                }
                return(true);
            }

            if (dotaChat.Message.StartsWith("~"))
            {
                if (!CheckTime(user))
                {
                    return(true);
                }
                user.LastUsed = DateTime.Now;
                string message        = dotaChat.Message.Substring(1);
                var    discordMessage = new DiscordMessage()
                {
                    content = "?dota " + message, tts = false, username = dotaChat.Username
                };
                Send(discordMessage);
                return(true);
            }


            if (dotaChat.Message.StartsWith("#") && user.Admin == true)
            {
                try
                {
                    var splitMessage = dotaChat.Message.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);

                    switch (splitMessage[0])
                    {
                    case "#mute":
                        if (splitMessage.Length < 2)
                        {
                            return(false);
                        }
                        if (splitMessage[1] == "myteam")
                        {
                            AlliesEnabled = true;
                        }
                        else if (splitMessage[1] == "enemyteam")
                        {
                            AllEnabled = true;
                        }
                        else
                        {
                            EnabledUsers.Remove(splitMessage[1]);
                        }
                        break;

                    case "#unmute":
                        if (splitMessage.Length < 2)
                        {
                            return(false);
                        }
                        if (splitMessage[1] == "myteam")
                        {
                            AlliesEnabled = false;
                        }
                        else if (splitMessage[1] == "enemyteam")
                        {
                            AllEnabled = false;
                        }
                        else
                        {
                            EnabledUsers.Add(splitMessage[1], new User {
                                Name = splitMessage[1]
                            });
                        }
                        break;

                    case "#mango":
                        if (splitMessage.Length < 2)
                        {
                            return(false);
                        }
                        EnabledUsers[splitMessage[1]].MangoMode = true;
                        break;

                    case "#unmango":
                        if (splitMessage.Length < 2)
                        {
                            return(false);
                        }
                        EnabledUsers[splitMessage[1]].MangoMode = false;
                        break;

                    default:
                        return(false);
                    }
                    return(true);
                }
                catch
                {
                }
            }

            return(false);
        }