public static void ChatCommandMessageReceived(ChatMessageCommandViewModel chatCommandMessage) { if (GlobalEvents.OnChatCommandMessageReceived != null) { GlobalEvents.OnChatCommandMessageReceived(null, chatCommandMessage); } }
private async Task AddMessage(ChatMessageViewModel message) { this.Messages.Add(message); if (!this.ChatUsers.ContainsKey(message.User.ID)) { await this.AddUser(message.User); } if (this.DisableChat && !message.ID.Equals(Guid.Empty)) { await this.DeleteMessage(message.ID); return; } string moderationReason; if (message.ShouldBeModerated(out moderationReason)) { await this.DeleteMessage(message.ID); string whisperMessage = " due to chat moderation for the following reason: " + moderationReason + ". Please watch what you type in chat or further actions will be taken."; message.User.ChatOffenses++; if (ChannelSession.Settings.ModerationTimeout5MinuteOffenseCount > 0 && message.User.ChatOffenses >= ChannelSession.Settings.ModerationTimeout5MinuteOffenseCount) { await this.Whisper(message.User.UserName, "You have been timed out from chat for 5 minutes" + whisperMessage); await this.TimeoutUser(message.User.UserName, 300); } else if (ChannelSession.Settings.ModerationTimeout1MinuteOffenseCount > 0 && message.User.ChatOffenses >= ChannelSession.Settings.ModerationTimeout1MinuteOffenseCount) { await this.Whisper(message.User.UserName, "You have been timed out from chat for 1 minute" + whisperMessage); await this.TimeoutUser(message.User.UserName, 60); } else { await this.Whisper(message.User.UserName, "Your message has been deleted" + whisperMessage); } return; } if (ChannelSession.IsStreamer && ChatMessageCommandViewModel.IsCommand(message) && !message.User.Roles.Contains(UserRole.Banned)) { ChatMessageCommandViewModel messageCommand = new ChatMessageCommandViewModel(message); GlobalEvents.ChatCommandMessageReceived(messageCommand); PermissionsCommandBase command = ChannelSession.AllChatCommands.FirstOrDefault(c => c.ContainsCommand(messageCommand.CommandName)); if (command != null) { await command.Perform(message.User, messageCommand.CommandArguments); } } }
private async void GlobalEvents_OnChatCommandMessageReceived(object sender, ChatMessageCommandViewModel e) { if (this.giveawayEnabled) { if (this.selectedWinner == null && e.CommandName.Equals(ChannelSession.Settings.GiveawayCommand)) { if (this.enteredUsers.Contains(e.User)) { await ChannelSession.Chat.Whisper(e.User.UserName, "You have already entered into this giveaway, stay tuned to see who wins!"); return; } bool isUserValid = true; if (ChannelSession.Settings.GiveawayUserRole == UserRole.Follower) { isUserValid = e.User.IsFollower; } else if (ChannelSession.Settings.GiveawayUserRole == UserRole.Subscriber) { isUserValid = e.User.Roles.Contains(UserRole.Subscriber); } if (isUserValid) { if (ChannelSession.Settings.GiveawayRankRequirement != null && ChannelSession.Settings.GiveawayRankRequirement.GetCurrency() != null) { UserCurrencyDataViewModel rankData = e.User.Data.GetCurrency(ChannelSession.Settings.GiveawayRankRequirement.GetCurrency()); if (!ChannelSession.Settings.GiveawayRankRequirement.DoesMeetRankRequirement(e.User.Data)) { await ChannelSession.Settings.GiveawayRankRequirement.SendRankNotMetWhisper(e.User); return; } } if (ChannelSession.Settings.GiveawayCurrencyRequirement != null && ChannelSession.Settings.GiveawayCurrencyRequirement.GetCurrency() != null) { UserCurrencyDataViewModel currencyData = e.User.Data.GetCurrency(ChannelSession.Settings.GiveawayCurrencyRequirement.GetCurrency()); if (!ChannelSession.Settings.GiveawayCurrencyRequirement.TrySubtractAmount(e.User.Data)) { await ChannelSession.Settings.GiveawayCurrencyRequirement.SendCurrencyNotMetWhisper(e.User); return; } } await ChannelSession.Chat.Whisper(e.User.UserName, "You have been entered into the giveaway, stay tuned to see who wins!"); await this.Dispatcher.BeginInvoke(new Action(() => { if (!this.enteredUsers.Contains(e.User)) { this.enteredUsers.Add(e.User); } })); } else { await ChannelSession.Chat.Whisper(e.User.UserName, string.Format("You are not able to enter this giveaway as it is only for {0}", ChannelSession.Settings.GiveawayUserRole)); } } else if (this.selectedWinner != null && e.CommandName.Equals("claim") && this.selectedWinner.Equals(e.User)) { await ChannelSession.Chat.SendMessage(string.Format("@{0} has claimed their prize! Listen closely to the streamer for instructions on getting your prize.", e.User.UserName)); await this.EndGiveaway(); } } }