This will need to pass the userId
argument before the Execute Code
then after the script you can use totalBitsDonated0
userName0
rank0
as a variable that will return the lifetime amount of bits donated from that user and his rank on your channel.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using System.Net.Http;
using System.Net.Http.Headers;
public class Datum {
public string user_id { get; set; }
public string user_login { get; set; }
public string user_name { get; set; }
public int rank { get; set; }
public int score { get; set; }}
public class Root {
public List<Datum> data { get; set; }
// public DateRange date_range { get; set; }
public int total { get; set; }}
public class LeaderBoard{
public string userName { get; set; }
public int rankNumber { get; set; }
public int bits { get; set; }}
public class AllDatas{
public List<LeaderBoard> leaderBoard { get; set; }
public DateTime start { get; set; }
public DateTime end { get; set; }}
public class CPHInline
{
public bool Execute()
{
Task<AllDatas> getAllDatasTask = FunctionGetAllDatas();
getAllDatasTask.Wait();
AllDatas datas = getAllDatasTask.Result;
if (datas.leaderBoard.Count > 0)
{
string rank0 = datas.leaderBoard[0].rankNumber.ToString();
string userName0 = datas.leaderBoard[0].userName;
string bits0 = datas.leaderBoard[0].bits.ToString();
CPH.SetArgument("totalBitsDonated0", bits0);
CPH.SetArgument("userName0", userName0);
CPH.SetArgument("rank0", rank0);
}
else
{
CPH.LogDebug("no data");
CPH.SetArgument("totalBitsDonated", 0);
}
return true;
}
public HttpClient client = new HttpClient();
public async Task<Root> FunctionCallTwitchAPI()
{
string userId;
CPH.TryGetArg("targetUserId", out userId) ;
string tokenValue = CPH.TwitchOAuthToken;
string clientIdValue = CPH.TwitchClientId;
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("client-ID", clientIdValue);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenValue);
HttpResponseMessage response = await client.GetAsync("https://api.twitch.tv/helix/bits/leaderboard?user_id=" + userId+"&count=1");
HttpContent responseContent = response.Content;
string responseBody = await response.Content.ReadAsStringAsync();
CPH.LogDebug(responseBody.ToString());
Root root = JsonConvert.DeserializeObject<Root>(responseBody);
return root;
}
public async Task<AllDatas> FunctionGetAllDatas()
{
AllDatas datas = new AllDatas()
{
leaderBoard = new List<LeaderBoard>()
};
Root root = await FunctionCallTwitchAPI();
foreach (Datum datum in root.data)
{
LeaderBoard newData = new LeaderBoard
{
userName = datum.user_name,
rankNumber = datum.rank,
bits = datum.score
};
datas.leaderBoard.Add(newData);
}
return datas;
}
}