Click here to Skip to main content
13,445,852 members (37,021 online)
Click here to Skip to main content
Add your own
alternative version


54 bookmarked
Posted 19 Sep 2004

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! ;)


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

You may also be interested in...


Comments and Discussions

QuestionHow to stop listening to the server? Pin
Member 1021809125-Aug-13 19:55
memberMember 1021809125-Aug-13 19:55 
QuestionMutliple-Users for AJAX Chat Pin
Member 807251618-May-12 23:42
memberMember 807251618-May-12 23:42 
GeneralMy vote of 1 Pin
xComaWhitex6-Jan-11 22:28
memberxComaWhitex6-Jan-11 22:28 
QuestionC# Application instead of console? Pin
Levisaxos9-Nov-09 3:38
memberLevisaxos9-Nov-09 3:38 
GeneralStill not working... Pin
supra5619-Jul-07 5:08
membersupra5619-Jul-07 5:08 
GeneralVoice Conference-HELP PLZ!! Pin
mfc_surfer12-Jun-07 3:21
membermfc_surfer12-Jun-07 3:21 
GeneralRe: Voice Conference-HELP PLZ!! Pin
meebey12-Jun-07 3:30
membermeebey12-Jun-07 3:30 
GeneralRe: Voice Conference-HELP PLZ!! Pin
mfc_surfer12-Jun-07 23:04
membermfc_surfer12-Jun-07 23:04 
GeneralRe: Voice Conference-HELP PLZ!! Pin
farzade14-Oct-07 19:39
memberfarzade14-Oct-07 19:39 
GeneralRe: Voice Conference-HELP PLZ!! Pin
CompMan4423-Aug-08 21:12
memberCompMan4423-Aug-08 21:12 
GeneralIRC Server Pin
mfc_surfer10-Jun-07 22:02
membermfc_surfer10-Jun-07 22:02 
GeneralRe: IRC Server Pin
farzade14-Oct-07 19:55
memberfarzade14-Oct-07 19:55 
Questionhow do I compile this? Pin
V32546-Apr-07 3:03
memberV32546-Apr-07 3:03 
AnswerRe: how do I compile this? Pin
meebey6-Apr-07 4:45
membermeebey6-Apr-07 4:45 
GeneralRe: how do I compile this? Pin
Member 1115323314-Oct-14 8:08
memberMember 1115323314-Oct-14 8:08 
AnswerRe: how do I compile this? Pin
Yeorwned11-May-09 8:18
memberYeorwned11-May-09 8:18 
Questionother english language can support ? Pin
abcomp0120-Nov-06 20:53
memberabcomp0120-Nov-06 20:53 
Questioncan through NAT? Pin
iamcoder27-Apr-06 23:18
memberiamcoder27-Apr-06 23:18 
AnswerRe: can through NAT? Pin
meebey28-Apr-06 0:25
membermeebey28-Apr-06 0:25 
GeneralRe: can through NAT? Pin
iamcoder28-Apr-06 21:07
memberiamcoder28-Apr-06 21:07 
GeneralRe: can through NAT? Pin
meebey29-Apr-06 1:39
membermeebey29-Apr-06 1:39 
GeneralRe: can through NAT? Pin
iamcoder29-Apr-06 17:01
memberiamcoder29-Apr-06 17:01 
GeneralExample has few errors. Pin
chmod222224-Jan-06 23:07
memberchmod222224-Jan-06 23:07 
GeneralUpdated Article Pin
meebey16-Jan-05 7:27
membermeebey16-Jan-05 7:27 
GeneralHesh wants DCC! :P Pin
FocusedWolf28-Sep-04 2:54
sussFocusedWolf28-Sep-04 2:54 

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

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

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