void RewardForViewing() { if (((TimeSpan)(DateTime.Now - LastViewerRewardCheck)).TotalSeconds < 60) { return; } LastViewerRewardCheck = DateTime.Now; if (!Data.APIIntergrations.Twitch.IsLive(BotInstance)) { return; } Newtonsoft.Json.Linq.JToken JData = Data.APIIntergrations.Twitch.GetViewers(BotInstance); int Reward = int.Parse(BotInstance.CommandConfig["AutoRewards"]["Viewing"]["RewardPerMinute"].ToString()); IEnumerable<Newtonsoft.Json.Linq.JToken> Merged = JData["chatters"]["vips"]. Union(JData["chatters"]["moderators"]). Union(JData["chatters"]["staff"]). Union(JData["chatters"]["admins"]). Union(JData["chatters"]["global_mods"]). Union(JData["chatters"]["viewers"]); List<KeyValuePair<string, string>> Headers; Headers = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("BalanceIncrement",Reward.ToString()), new KeyValuePair<string, string>("WatchTimeIncrement","1"), new KeyValuePair<string, string>("CurrencyID",this.BotInstance.Currency.ID.ToString()) }; JData = Newtonsoft.Json.Linq.JToken.Parse("{'TwitchIDs':[]}"); List<string> TwitchIDs = new List<string> { }; foreach (Newtonsoft.Json.Linq.JToken StreamViewer in Merged) { StandardisedUser U = StandardisedUser.FromTwitchUsername(StreamViewer.ToString(), BotInstance); if (U != null) { TwitchIDs.Add(U.ID); } } JData["TwitchIDs"] = Newtonsoft.Json.Linq.JToken.FromObject(TwitchIDs); Data.APIIntergrations.RewardCurrencyAPI.WebRequests.PostRequest("viewer", Headers, true,JData); }
public int GetRemainingCooldown(StandardisedUser U) { int GlobalAlertTimeout = int.Parse(BotInstance.CommandConfig["CommandSetup"]["Alert"]["CoolDown"]["Global"].ToString()), GlobalTimeoutRemaining = GlobalAlertTimeout - (int)((TimeSpan)(DateTime.Now - LastAlert)).TotalSeconds, IndividualAlertTimeout = int.Parse(BotInstance.CommandConfig["CommandSetup"]["Alert"]["CoolDown"]["Individual"].ToString()), IndividualTimeoutRemaining = 0; if (AlertRequests.Where(x => x.User.ID == U.ID).Count() != 0) { IndividualTimeoutRemaining = IndividualAlertTimeout - (int)((TimeSpan)(DateTime.Now - AlertRequests.Where(x => x.User.ID == U.ID).First().LastAlert)).TotalSeconds; } if (GlobalTimeoutRemaining > IndividualTimeoutRemaining) { return GlobalTimeoutRemaining; } else { return IndividualTimeoutRemaining; } }
async Task RewardDonator(Newtonsoft.Json.Linq.JToken Donation,int DonationReward) { int DonationAmount = (int)Math.Round(double.Parse(Donation["amount"].ToString()), 2), AdjustedReward= (int)Math.Ceiling((double)DonationAmount * DonationReward); StandardisedUser S = StandardisedUser.FromTwitchUsername(Donation["name"].ToString(), BotInstance); if (S != null) { Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer B = Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.FromTwitchDiscord(MessageType.Twitch, BotInstance, S.ID); Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.AdjustBalance(B, DonationAmount, "+"); await BotInstance.CommandHandler.SendMessage(BotInstance.CommandConfig["AutoRewards"]["Donating"]["Response"].ToString(), BotInstance.CommandConfig["ChannelName"].ToString(), MessageType.Twitch, S, AdjustedReward,-1, DonationAmount+" "+Donation["currency"].ToString()); } }
public async void ReSubbed(object sender, OnReSubscriberArgs e) { StandardisedUser Subber = new StandardisedUser(); Subber.ID = e.ReSubscriber.UserId; Subber.UserName = e.ReSubscriber.DisplayName; int Reward = int.Parse(BotInstance.CommandConfig["AutoRewards"]["ReSub"]["Reward"].ToString()); Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer V = Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.FromTwitchDiscord(MessageType.Twitch, BotInstance, Subber.ID); if (V != null) { Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.AdjustBalance(V, Reward, "+"); } await BotInstance.CommandHandler.SendMessage(BotInstance.CommandConfig["AutoRewards"]["ReSub"]["Response"].ToString(), e.Channel.ToString(), MessageType.Twitch, Subber, Reward); if (BotInstance.CommandConfig["AutoRewards"]["DiscordSubNotifications"].ToString() == "True") { await BotInstance.CommandHandler.SendMessage(BotInstance.CommandConfig["AutoRewards"]["ReSub"]["Response"].ToString(), BotInstance.CommandConfig["Discord"]["NotificationChannel"].ToString(), MessageType.Discord, Subber, Reward); } }
public async void SubGifted(object sender, OnGiftedSubscriptionArgs e) { StandardisedUser Gifter = new StandardisedUser(), Giftee = new StandardisedUser();; Gifter.ID = e.GiftedSubscription.Id; Gifter.UserName = e.GiftedSubscription.DisplayName; Giftee.ID = e.GiftedSubscription.MsgParamRecipientId; Giftee.UserName = e.GiftedSubscription.MsgParamRecipientDisplayName; int Reward = int.Parse(BotInstance.CommandConfig["AutoRewards"]["GiftSub"]["Reward"].ToString()); Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer V = Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.FromTwitchDiscord(MessageType.Twitch, BotInstance, Gifter.ID); if (V != null) { Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.AdjustBalance(V, Reward, "+"); } await BotInstance.CommandHandler.SendMessage(BotInstance.CommandConfig["AutoRewards"]["GiftSub"]["Response"].ToString(), e.Channel.ToString(), MessageType.Twitch, Gifter, Reward, OtherString : "@" + Giftee.UserName); if (BotInstance.CommandConfig["AutoRewards"]["DiscordSubNotifications"].ToString() == "True") { await BotInstance.CommandHandler.SendMessage(BotInstance.CommandConfig["AutoRewards"]["GiftSub"]["Response"].ToString(), BotInstance.CommandConfig["Discord"]["NotificationChannel"].ToString(), MessageType.Discord, Gifter, Reward, OtherString : "<@" + Giftee.UserName + ">"); } }
public bool AlertTimeOutExpired(StandardisedUser U) { int GlobalAlertTimeout= int.Parse(BotInstance.CommandConfig["CommandSetup"]["Alert"]["CoolDown"]["Global"].ToString()); CullAlerts(); return (AlertRequests.Where(x => x.User.ID == U.ID).Count() == 0) && (((TimeSpan)(DateTime.Now-LastAlert)).TotalSeconds>=GlobalAlertTimeout); }
public bool UserDueling(StandardisedUser User) { return Duels.Where(x => x.Value.Creator.ID == User.ID || x.Value.Acceptor.ID == User.ID).Count() != 0; }
public bool UserRaffleing(StandardisedUser User) { return RaffleParticipants.Where(x=>x.User.ID==User.ID).Count()!=0; }
void RewardUser(int Reward,StandardisedUser U,MessageType MessageType) { Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer B = Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.FromTwitchDiscord(MessageType, BotInstance, U.ID); Data.APIIntergrations.RewardCurrencyAPI.Objects.Viewer.AdjustBalance(B, Reward, "+"); }