【发布时间】:2011-10-26 13:51:30
【问题描述】:
我正在使用 SmartIRC4Net 库 (http://www.meebey.net/projects/smartirc4net/) 在 c# 中制作机器人。如果您不熟悉该库,请随时告诉我替代方案。
我使用它是因为这是我能找到的最受支持的库。我阅读了“测试”示例机器人,并试图通过删除查询和响应输入来将其简化为基础。
由于缺少更好的测试渠道,我对其进行了编程以尝试连接到他们的网络频道,但它似乎无法连接。当我调试机器人时,我的客户端上没有任何显示(我现在在他们的频道上)。控制台也没有显示任何 IRC 错误消息或异常,只有我放在最后的暂停。 代码:
public static IrcClient irc = new IrcClient();
public static void Main(string[] args)
{
//Setup
irc.Encoding = System.Text.Encoding.UTF8;
irc.SendDelay = 200;
irc.ActiveChannelSyncing = true;
//Event Handlers
irc.OnError += new ErrorEventHandler(irc_OnError);
irc.OnConnected += new EventHandler(irc_OnConnected);
irc.OnRawMessage += new IrcEventHandler(irc_OnRawMessage);
try
{
//Connect, log in, join channel
irc.Connect("irc.freenode.org", 6667);
irc.Login("HGPBot", "HGP Bot");
irc.RfcJoin("#smartirc");
}
catch (Exception e)
{
Console.WriteLine("Could not connect, exception:" + Environment.NewLine
+ e.Message + Environment.NewLine
+ e.ToString());
}
//pause
Console.WriteLine("Press any key to continue");
Console.ReadKey(true);
//Disconnect
irc.Disconnect();
//Exit
Environment.Exit(0);
}
static void irc_OnRawMessage(object sender, IrcEventArgs e)
{
Console.WriteLine("irc_OnRawMessage initiated");
}
static void irc_OnConnected(object sender, EventArgs e)
{
Console.WriteLine("Connected");
irc.SendMessage(SendType.Message, "#smartirc", "Connected");
}
static void irc_OnError(object sender, ErrorEventArgs e)
{
Console.WriteLine("IRC Error: " + e.ErrorMessage);
}
[更新:添加了 @Russ C 建议的 irc_OnConnected 事件。该事件被触发并且“已连接”记录在控制台上。尽管如此,频道上仍然没有发生任何事情。我将添加一个 sendmessage 行,看看会发生什么。]
[Update2:添加了 SendMessage 和 OnRawMessage 事件。通道上没有输出,并且 OnRawMessage 事件下的文本不会写入控制台。 (我是否为 OnMessage 使用了正确的事件?“OnMessage”事件不存在,并且测试机器人说 OnMessage 将“获取所有 IRC 消息”。)]
【问题讨论】:
-
它没有你要附加到的 onConnected/onMessage 接收事件吗?
-
我相信它有一个 OnConnected 事件,我会添加它并看看会发生什么,但是你所说的“你应该附加到”是什么意思,以及 OnMessageReceived 事件会做什么?
-
我会在我离开 iPad 时写一个答案,给我几分钟时间。
-
这里,我更新了。我会尝试添加一个 sendmessage 行。顺便说一句,感谢您的帮助。
-
这很可能是因为您缺少 irc.Listen();你的 catch 语句关闭后的命令。