Click here to Skip to main content
Click here to Skip to main content

SmartIrc4net - the C# IRC library

, 19 Sep 2004
Rate this:
Please Sign up or sign in to vote.
IRC library for .NET.


I wrote SmartIrc4net for having a high-level IRC API for .NET/C#. I started long time ago with IRC programming for PHP, I wrote Net_SmartIRC. Net_SmartIRC is a PEAR class. Later, I was disappointed that the OO features of PHP are so limited. I was starting to port the project to C++, after a few weeks I stopped, so many things are missing and have to be written (even simple things like string manipulation). Then I found C#. And I ported SmartIRC in about 1-2 weeks! After that the API got better and better, it's just great what it is now... so here we are SmartIrc4net.

Object Design

This library has a 3 layered API, allows developers to pick the layer/features he needs. You could use any layer for writing IRC applications, the question is how much IRC abstraction and features you need. You have the choice!

Layer 1: IrcConnection

This layer is a low-level API and manages the messagebuffer (for reading and writing). Also, the ping/pong and connection handling is done.

Layer 2: IrcCommands (extends IrcConnection)

This layer is a middle-level API. It contains all IRC RFC commands plus some useful and easy to use IRC methods (like Op, Deop, Ban, Unban etc.).

Layer 3: IrcClient (extends IrcCommands)

This layer is a high-level API with all features you could need for IRC programming, like channel syncing (keeping track of channels in objects with modes/topic/users), user syncing (for nicks, indents, hosts, realnames, servers, and hopcounts). This layer is fully event driven, all received data is parsed into different events with special arguments for each event (this makes it very easy to use the received IRC data without checking each time the RFC!)

How to use SmartIrc4net

Here is an example of how to use the library using the high-level API:

using System;
using System.Collections;
using Meebey.SmartIrc4net;
using Meebey.SmartIrc4net.Delegates;

public class Test
    public static IrcClient irc = new IrcClient();

    public static void OnQueryMessage(Data ircdata)
        switch (ircdata.MessageEx[0]) {
            case "join":
            case "part":
            case "say":
                irc.Message(SendType.Message, MessageEx[1], MessageEx[2]);

    public static void Main(string[] args)
        irc.SendDelay = 200;
        irc.AutoRetry = true;
        irc.ChannelSyncing = true;
        irc.OnQueryMessage += new MessageEventHandler(OnQueryMessage);

        string[] serverlist;
        serverlist = new string[] {""};

        int    port   = 6667;
        if(irc.Connect(serverlist, port) == true) {
            irc.Login("SmartIRC", "Stupid Bot");
            irc.Message(SendType.Message, "#smartirc", "test message");
            irc.Message(SendType.Action, "#smartirc", " thinks this is cool");
            irc.Message(SendType.Notice, "#smartirc", "SmartIrc4net rocks!");
        } else {
            System.Console.WriteLine("couldn't connect!");

Connect to your favorite IRC server, set the IRC server in the source. Join the #smartirc channel. Compile the source, spawn the bot. The bot should come and say three messages, after that send him a private message: "/msg smartirc say #smartirc hello!".

Official Project Page

SmartIrc4net is an own project which you can find here. There you get the current versions, can report bugs or post help requests on the forum. Comments, suggestions and criticism are welcome!

Have fun

There you go, have fun with bot coding! Wink | ;)


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author


Germany Germany
No Biography provided

Comments and Discussions

QuestionHow to stop listening to the server? PinmemberMember 1021809125-Aug-13 20:55 
QuestionMutliple-Users for AJAX Chat PinmemberMember 807251619-May-12 0:42 
GeneralMy vote of 1 PinmemberxComaWhitex6-Jan-11 23:28 
QuestionC# Application instead of console? PinmemberLevisaxos9-Nov-09 4:38 
GeneralStill not working... Pinmembersupra5619-Jul-07 6:08 
GeneralVoice Conference-HELP PLZ!! Pinmembermfc_surfer12-Jun-07 4:21 
GeneralRe: Voice Conference-HELP PLZ!! Pinmembermeebey12-Jun-07 4:30 
GeneralRe: Voice Conference-HELP PLZ!! Pinmembermfc_surfer13-Jun-07 0:04 
GeneralRe: Voice Conference-HELP PLZ!! Pinmemberfarzade14-Oct-07 20:39 
GeneralRe: Voice Conference-HELP PLZ!! PinmemberCompMan4423-Aug-08 22:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150301.1 | Last Updated 19 Sep 2004
Article Copyright 2004 by meebey
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid