Ok; Как и вся логика, основанная на событиях (см. здесь «Асинхронная логика»), вам необходимо подписаться на событие, чтобы библиотека уведомляла вас, когда нужно что-то сделать.
Поскольку ваш тестовый код не подписывается / не присоединяется к каким-либо событиям из библиотеки SmartIRC, библиотека просто бездействует, ничего не делая.
Вы делаете часть этого с помощью строки irc.OnError, но вам также необходимо добавить следующие методы:
irc.OnQueryMessage += new IrcEventHandler(OnQueryMessage);
irc.OnRawMessage += new IrcEventHandler(OnRawMessage);
Тогда пара методов:
// this method we will use to analyse queries (also known as private messages)
public static void OnQueryMessage(object sender, IrcEventArgs e)
{
switch (e.Data.MessageArray[0]) {
case "hello":
// this is where you decipher private messages posted to the bot.
// if someone does "/privmsg HGPBot hello" this will reply "Hello!"
irc.SendMessage(SendType.Message, "HGPBot, "Hello!");
break;
default:
break;
}
}
// this method will get all IRC messages
public static void OnRawMessage(object sender, IrcEventArgs e)
{
System.Console.WriteLine("Received: "+e.Data.RawMessage);
}
Если вы поставите точку останова в этой строке System.Console, вы должны начать видеть вещи, поступающие от бота.
Если это не помогло, попробуйте создать собственный канал на IRC-сервере.
Кроме того, не забывайте: пользователь может подключаться к IRC, не находясь в канале, если вы уверены, что имя пользователя, которое использует ваш бот, уникально и работает (то есть вы можете войти в него самостоятельно через mirc или что-то еще) просто пытаюсь отправить команду / privmsg вашему боту, как только программа оказывается подключенной.
edit: Кроме того, я только что заметил, что в вашей программе нет цикла.
Вам нужно добавить irc.Listen (); до вашего заявления паузы. Это переведет бот irc в режим прослушивания и станет блокирующим циклом, поэтому единственный способ выйти из вашей программы на этом этапе - завершить задачу, но, по крайней мере, покажет, что она работает.
Редактировать 2: заставить бота слушать:
// here we tell the IRC API to go into a receive mode, all events
// will be triggered by _this_ thread (main thread in this case)
// Listen() blocks by default, you can also use ListenOnce() if you
// need that does one IRC operation and then returns, so you need then
// an own loop
irc.Listen();
//pause
Console.WriteLine("Press any key to continue");
Console.ReadKey(true);