IRC
Маленькая банальная программа, которая занимается тем что заходит на заданный IRC сервер
и начинает принимать выполнямемые команды. Написана она конешно не так круто как ICQ бот.
UNIX и прочие версии я не создавал (потому что лень). Да и вообще тут я положил несколько
упрощённую версию. Мне лично он неё нужно больше возможностей, предохранителей, команды через DCC чат. Ещё md5
авторизацию, без которой я никакого смысла в боте для чата не вижу.
Списки команд
.dir [limit]
Показывает список файлов в текущем каталоге. limit - ораничитель числа строк (по умолчанию 10).
.exit [:message]
Выход с сервера. Если хотите указать причину выхода, то не забудьте двоеточие перед ним.
.cd <path>
Сменить текущий каталог.
.pwd
Показать текущий каталог.
.host
Показать имя компьютера.
.set-server <server>
Установить сервер для захода. По умолчанию irc.degunino.net
.set-join <chanel1>[,chanel2]
Установить каналы для захода. По умолчанию #unix
.set-key key
Установить ключ для захода на канал.
.set-x <0|1>
Необходимость прятать ip перед входом на сервер.
.get-file [:filename]
Взять файл по DCC. Незабудьте двоетоние перед названием.
.set-nick <nick>
Установить и запомнить новый ник. В любом случае, если ник на сервер уже занят,
ник автоматически меняется на случайный.
.raw <:line>
Отправить сырую команду на сервер (произвольную строку, заданную вами). Двоеточие не забывать.
Немного об устройстве
Исходник у программы немного невнятный. Коментириев мало, процедуры не отсортированы ни по названиям ни по разделам.
И вообще по правде местами коряво вышло надо будет оптимизировать немного.
Это мягко говоря сделано потому что знать в нём особо нечего и протокол простой
(по сравению с ICQ как плевок в океане).
Построен он ввиде двух классов Parser и IRC. В IRC - лежит сама программа. В Parser
процедуры упрощающие анализ строк. Точнее процедура которая разделяет слова,
разделённые пробелами.
1: Parser arg(line);
2: char *a=arg[2];
3: char *b=arg.GetSlack();
1 - строка разделяет слова. 2 - даёт второе по счёту слово (считая с нуля).
3 - даёт хвост строки.
Хвостом я называю часть строки отделённую пробелом и двоеточием. В протоколе так обычно
делают с тектом сообщения и прочими многословными вещами (хотя клиент может так и не делать,
хороший сервер на это не обратит внимания).
file_table - содержит информацию о запрошенных файлах, закачка которых ещё не началась.
Перед тем как законетится по второму порту, клиент может запросить дозакачку. (имена файлов при дозакачке не проверяются, проверяется только порт).
О IRC протоколе
Здесь рассказывать особенно нечего. Читайте RFC1459, RFC2810, а так же эти несколько документов.
CTCP.txt, DCC.txt,
DCCResume.txt, raw005.txt
Исходник
irc.cpp, irc.dsp, irc.dsw