internal async void UpdateRedemptionStatus(ReadMessage formattedMessage, KrakenConnections.RedemptionStates redemptionStateToSet)
        {
            var rewards = await krakenConnection.GetUnredeemedRewardsForUser(parent, formattedMessage.RewardID, formattedMessage.userID);

            parent.ThreadSafeAddPreviewText($"{(redemptionStateToSet == KrakenConnections.RedemptionStates.FULFILLED ? "Accepting" : "Denying")} requests for {formattedMessage.user}", LineType.IrcCommand);
            krakenConnection.UpdateRedemptionStatus(parent, formattedMessage.RewardID, rewards.Select(x => x.id).ToArray(), redemptionStateToSet);
        }
Exemplo n.º 2
0
        private void MeebyIrc_OnRawMessage(object sender, IrcEventArgs e)
        {
            try
            {
                if (e.Data.Channel != null && e.Data.Nick != null && e.Data.Message != null)
                {
                    ReadMessage msg = new ReadMessage();
                    if (e.Data.Tags.ContainsKey("custom-reward-id"))
                    {
                        if (programSettings.TTSLogic == TTSLogic.RewardIDAndCommand || programSettings.SoundRedemptionLogic == SoundRedemptionLogic.ChannelPoints)
                        {
                            var rewardID = e.Data.Tags["custom-reward-id"];
                            msg.userID = e.Data.Tags["user-id"];

                            if (rewardID == programSettings.TTSRewardID)
                            {
                                msg.msgType  = MessageType.TTSReward;
                                msg.RewardID = rewardID;
                            }
                            else if (rewardID == programSettings.SoundRewardID)
                            {
                                msg.msgType  = MessageType.SoundReward;
                                msg.RewardID = rewardID;
                            }
                            else
                            {
                                msg.msgType  = MessageType.Normal;
                                msg.RewardID = "";
                            }
                        }
                        else
                        {
                            msg.msgType = MessageType.Normal;
                        }
                    }
                    msg.user    = e.Data.Nick;
                    msg.message = e.Data.Message;
                    msg.rights  = GetRoleFromTags(e);
                    bool result = RunBot(msg);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                Logger.AddLine("Exception on Raw Message: " + ex.ToString());
            }
        }
        public void IgnoreListRemove(ReadMessage msg)
        {
            if (moderators.Contains(msg.user))
            {
                string[] helper = msg.message.Split(new char[] { ' ' }, 2);

                if (ignorelist.Contains(helper[1].ToLower()))
                {
                    ignorelist.Remove(helper[1].ToLower());
                    SaveIgnoredList();
                    SendChatMessage("Removed " + helper[1] + " from ignored list.");
                }
                else
                {
                    SendChatMessage(helper[1] + " is not present on ignored list.");
                }
            }
        }
        public void TrustedUsersRemove(ReadMessage msg)
        {
            if (moderators.Contains(msg.user))
            {
                string[] helper = msg.message.Split(new char[] { ' ' }, 2);

                if (trustedUsers.Contains(helper[1].ToLower()))
                {
                    trustedUsers.Remove(helper[1].ToLower());
                    SaveTrustedList();
                    SendChatMessage("Removed " + helper[1] + " from trusted list.");
                }
                else
                {
                    SendChatMessage(helper[1] + " is not present on trusted list.");
                }
            }
        }
 public void TrustedUserAdd(ReadMessage msg)
 {
     if (moderators.Contains(msg.user))
     {
         string[] helper = msg.message.Split(new char[] { ' ' }, 2);
         if (!moderators.Contains(helper[1].ToLower()))
         {
             if (!trustedUsers.Contains(helper[1].ToLower()))
             {
                 trustedUsers.Add(helper[1].ToLower());
                 SaveTrustedList();
                 SendChatMessage("Added " + helper[1] + " to trusted list.");
             }
             else
             {
                 SendChatMessage(helper[1] + " is already on trusted list.");
             }
         }
     }
 }
 public void IgnoreListAdd(ReadMessage msg)
 {
     if (moderators.Contains(msg.user))
     {
         string[] helper = msg.message.Split(new char[] { ' ' }, 2);
         if (!moderators.Contains(helper[1].ToLower()))
         {
             if (!ignorelist.Contains(helper[1].ToLower()))
             {
                 ignorelist.Add(helper[1].ToLower());
                 SaveIgnoredList();
                 SendChatMessage("Added " + helper[1] + " to ignored list.");
             }
             else
             {
                 SendChatMessage(helper[1] + " is already on ignored list.");
             }
         }
         else
         {
             SendChatMessage("Moderators can't be added to ignored list!");
         }
     }
 }
Exemplo n.º 7
0
        private bool RunBot(ReadMessage formattedMessage)
        {
            FormattedMessage = formattedMessage;

            switch (FormattedMessage.msgType)
            {
            case MessageType.TTSReward:
            {
                parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.SoundCommand);

                if (programSettings.TTSLogic == TTSLogic.Restricted)
                {
                    if (FormattedMessage.rights >= programSettings.TTSRoleRequirement)
                    {
                        if (SndDB.PlayTTS(formattedMessage.user, formattedMessage.message, true))
                        {
                            irc.UpdateRedemptionStatus(formattedMessage, KrakenConnections.RedemptionStates.FULFILLED);
                        }
                        else
                        {
                            irc.UpdateRedemptionStatus(formattedMessage, KrakenConnections.RedemptionStates.CANCELED);
                        }
                        return(true);
                    }
                    else
                    {
                        return(true);
                    }
                }
                else
                {
                    SndDB.PlayTTS(formattedMessage.user, formattedMessage.message, true);
                    return(true);
                }
            }

            case MessageType.SoundReward:
            {
                parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.SoundCommand);
                string text = formattedMessage.message.ToLower();
                if (text.StartsWith(PrefixChar.ToString()))
                {
                    text = text.Remove(0, 1);
                }

                TwitchRightsEnum privilage = formattedMessage.rights;


                if (SndDB.PlaySoundIfExists(formattedMessage.user, text, privilage, true))
                {
                    irc.UpdateRedemptionStatus(formattedMessage, KrakenConnections.RedemptionStates.FULFILLED);
                }
                else
                {
                    irc.UpdateRedemptionStatus(formattedMessage, KrakenConnections.RedemptionStates.CANCELED);
                }

                return(true);
            }

            default:
                if (!formattedMessage.message.StartsWith(PrefixChar.ToString()) || irc.ignorelist.Contains(formattedMessage.user))
                {
                    parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.Generic);
                    //literally nothing else happens in your code if this is false
                    return(true);
                }
                else
                {
                    TwitchRightsEnum privilage = formattedMessage.rights;
                    string           text      = formattedMessage.message.Remove(0, 1).ToLower();

                    //Mod Commands
                    if (formattedMessage.rights >= TwitchRightsEnum.Mod || irc.moderators.Contains(formattedMessage.user))
                    {
                        if (text == "volume" || text.StartsWith("volume "))
                        {
                            parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.ModCommand);
                            SndDB.ChangeVolumeIRC(irc, text, parent);
                            return(true);
                        }

                        if (text == "delay" || text.StartsWith("delay "))
                        {
                            parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.ModCommand);
                            SndDB.ChangeDelay(irc, text);
                            return(true);
                        }

                        if (text == "stopallsounds")
                        {
                            parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.ModCommand);
                            SndDB.Stopallsounds();
                            return(true);
                        }

                        if (text.StartsWith("removesound "))
                        {
                            parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.ModCommand);
                            SndDB.RemoveSound(irc, text);
                            return(true);
                        }

                        if (text.StartsWith("suboverride"))
                        {
                            parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.ModCommand);
                            SndDB.ChangeSubOverride(irc, text);
                            return(true);
                        }
                    }

                    //TTS
                    if (text.StartsWith("tts "))
                    {
                        parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.SoundCommand);

                        if (programSettings.TTSLogic == TTSLogic.RewardIDAndCommand)
                        {
                            if (formattedMessage.rights >= TwitchRightsEnum.Mod)
                            {
                                SndDB.PlayTTS(formattedMessage.user, formattedMessage.message.Split(new char[] { ' ' }, 2)[1]);
                            }
                            return(true);
                        }

                        return(true);
                    }                             //SoundPlayback
                    else
                    {
                        if (programSettings.SoundRedemptionLogic == SoundRedemptionLogic.Legacy || privilage == TwitchRightsEnum.Admin)
                        {
                            parent.ThreadSafeAddPreviewText(formattedMessage.user + ": " + formattedMessage.message, LineType.SoundCommand);
                            SndDB.PlaySoundIfExists(formattedMessage.user, text, privilage);
                        }
                    }

                    return(true);
                }
            }
        }