我在计算irc频道中的总用户时遇到问题。 如果我的IRC机器人在所有用户之后加入,那么它将全部计算在内。如果有人离开,它就算正确了。但是,当有人加入时,它不会以某种方式将用户添加到计数中。
我的代码有什么问题?谢谢!
if (message.Replace("!", "").StartsWith("users"))
{
try
{
int count = ch.UserCount = 0;
foreach (string u in ch.Users)
{
count += 1;
}
_irc.SendMessage("Users Online: " + count, IRC.SupportedColors.Red, ch.Channel);
}
catch (Exception ee)
{
_irc.SendMessage("Error: " + ee.Message, IRC.SupportedColors.Red, ch.Channel);
}
}
答案 0 :(得分:2)
查看Amrykid.Web.IRC
,ch.Users
(其中ch
是IRCChannel
)是string[]
:
public string[] Users {
get {
return this._users;
}
}
foreach
完全能够正确地循环数组,但如果你想做的只是 count 用户,.Length
会更有效率。
无论问题是什么:它与foreach
无关,而与以下之一无关:
然而,似乎是Amrykid.Web.IRC
的支持问题。
看了AddUser
,它似乎只添加唯一的用户:
internal void AddUser(string user)
{
Collection<string> source = new Collection<string>();
try
{
foreach (string str in this._users)
{
source.Add(str);
}
}
catch (Exception)
{
}
if (!source.Contains(user))
{
source.Add(user);
}
this._users = null;
this._users = source.ToArray<string>();
}
虽然此实施不是特别好,但它似乎是有效的。
答案 1 :(得分:0)
当我创建这个库时,我是一个新手程序员,所以我希望这个库会出错。虽然我查看代码已经有一段时间了,但我建议您使用更好的书库,例如https://github.com/meebey/SmartIrc4net。