首先 - 我知道这个问题已被提出。我几乎不知道C#还在学习,很多代码来自一个教程,所以我希望能否直接回答我的实际代码。我正在做一个抽搐机器人。
private void ViewListUpdate()
{
ViewerBox.Items.Clear();
Chatters AllChatters = ChatClient.GetChatters("name");
chatBox.Text += "Checking the viewer list...";
foreach (string admin in AllChatters.Admins)
{
ViewerBox.Items.Add(admin + Environment.NewLine);
}
foreach (string staff in AllChatters.Staff)
{
ViewerBox.Items.Add(staff + Environment.NewLine);
}
foreach (string globalmod in AllChatters.GlobalMods)
{
ViewerBox.Items.Add(globalmod + Environment.NewLine);
}
foreach (string moderator in AllChatters.Moderators)
{
ViewerBox.Items.Add(moderator + Environment.NewLine);
}
foreach (string viewers in AllChatters.Viewers)
{
ViewerBox.Items.Add(viewers + Environment.NewLine);
}
}
获取错误的行(System.IndexOutOfRangeException:'索引超出了数组的范围。')如下:
Chatters AllChatters = ChatClient.GetChatters("name");
任何帮助都会很棒,谢谢。
答案 0 :(得分:0)
已编译的DLL
我已经为您生成了一个已编译的DLL,您可以下载并添加到您的项目中。你可以在这里找到:https://dropfile.to/9hzvwVX(已更新)
现在您可以为这样的频道获取用户:
var dataClient = new TwitchTmiClient();
var chatters = dataClient.GetChannelViewers("someTwitchChannelName");
Chatters现在将包含活动频道中的用户列表,按等级(admin,mod,viewer等)分隔。
<强>解释强>
由于此问题与我的个人兴趣相关,因此我决定将您要查找的功能添加到我在评论中发布的图书馆:https://github.com/michidk/TwitchCSharp
当然,下载文件总是有点粗略。所以我所做的是添加一个新的Twitch客户端实现,因为聊天数据不存储在Twitch Kraken API上,而是存储在旧的https://tmi.twitch.tv API上。
namespace TwitchCSharp.Clients
{
public class TwitchTmiClient : ITwitchClient
{
public readonly RestClient restClient;
public TwitchTmiClient(string url = TwitchHelper.TwitchTmiUrl)
{
restClient = new RestClient(url);
restClient.AddHandler("application/json", new DynamicJsonDeserializer());
restClient.AddHandler("text/html", new DynamicJsonDeserializer());
restClient.AddDefaultHeader("Accept", TwitchHelper.twitchAcceptHeader);
}
public ViewerList GetChannelViewers(string channel)
{
var request = new RestRequest("group/user/{channel}/chatters");
request.AddUrlSegment("channel", channel.ToLower());
return restClient.Execute<ViewerList>(request).Data;
}
public RestRequest GetRequest(string url, Method method)
{
return new RestRequest(url, method);
}
}
}
这个新的Twitch客户端使用两个模型将json反序列化为:
namespace TwitchCSharp.Models
{
public class ViewerList
{
[JsonProperty("_links")]
public Dictionary<string, string> Links;
[JsonProperty("chatter_count")]
public int ChatterCount;
[JsonProperty("chatters")]
public Chatter Chatters;
}
}
...
namespace TwitchCSharp.Models
{
public class Chatter
{
[JsonProperty("moderators")] public string[] Moderators;
[JsonProperty("staff")] public string[] Staff;
[JsonProperty("admins")] public string[] Admins;
[JsonProperty("global_mods")] public string[] GlobalMods;
[JsonProperty("viewers")] public string[] Viewers;
}
}
您可以在此处找到可以查看所有更改的存储库:https://github.com/nbokmans/TwitchCSharp/commit/ec38eecf1d0fbcb0b75c5de597a44582a61deb3d
如果您愿意,可以git clone
在存储库上方并在Visual Studio中打开它以自行构建它。