Твій власний супер-скрипт для IRC, Різне, Інтернет-технології, статті

Журнал “Хакер”
SINtez

Отже, ти вже не раз бував на IRC, ти часто чатішься з людьми, але все-таки багато команд тобі доводиться вводити своїми власними золотими рученятами. Нічого поганого в цьому, звичайно, немає. Ти пізнаєш свій IRC-клієнт, вчиш його команди, однак, часто буває дуже втомлює вводити одну і ту ж команду по 10 разів. Не треба! Для це і призначені скрипти.

Скрипт – це додаткова підпрограма, яка модифікує твій IRC-клієнт і дозволяє автоматизувати деякі процеси. Наприклад, коли тебе викинули з каналу, тобі доводиться писати / join # channel, а потім ще й викидати кривдника: / kick # channel Nick <причина>. Все це можна увігнати в скрипт, який сам буде виконувати всі ці дії, а тобі залишиться лише насолоджуватися перебуванням на IRC.

PIRCH

Все нижчевикладене буде ставитися до IRC-клієнта PIRCH. Чому не mIRC? Тому що особисто я віддаю перевагу PIRCH і саме під нього я вмію писати скрипти. А під mIRC-му я працювати не вмію, а значить нічого путнього тобі розповісти не зможу.

Поїхали

Для початку тобі потрібно зрозуміти роботу будь-якого IRC-клієнта. У ньому є кілька розділів, під які ми й буде скріптовать. Перший, і мабуть, найважливіший розділ – це Events (Події). Events – це типу сніффер, який стежить за всім, що відбувається в каналі та інших віконцях. Адже і в цих віконцях постійно щось відбувається. Те хтось зайде, то вийде, то скаже що-небудь, то кікнутий кого-небудь. Ось за всіма цими подіями у нас і стежитимуть Events-и.

Далі. Aliases. Алаізіси – це скорочені команди. Тобто тобі, припустимо, треба набрати команду / join # xakep. Ти можеш створити алаізіс “x”, який буде виконувати цю команду. І тоді, для того щоб зайти на канал # xakep, тобі всього-то треба буде набрати / x. Круто? Ото ж! І під кожен алаізіс ти можеш прописувати не одну, а відразу кілька команд.

Але поки забудемо про це і перейдемо до наступного пункту. Popups. Ті, хто постійно сновигає по WWW, знає, що Popups – це з’являються нові вікна браузера. У IRC приблизно те ж =). Тільки тут Popups – Це вискакують менюшки. Припустимо, тобі потрібно забанити якогось чувака. Якщо ти прописав в скрипті купу відповідний попупсов, то, клікнувши на його ніку правою кнопкою щура, отримаєш величезну меню, в якому зможеш вибрати, яким способом і з яким мессаджем ти позбудешся цього засранця.

Ближче до тіла

Ну що ж. Основи ти знаєш, тепер уже можна переходити до освоєння всієї цієї нісенітниці. Попереджу відразу – я не буду торкатися PERL-скриптінг, так як це взагалі окрема історія, і для роботи з цією фішкою тобі потрібно вивчити хоча б основи мови Перл. У тебе, наскільки я розумію, такого бажання зовсім не виникає, тому ми це занудство пропустимо. Та й потім, не особливо-то нам потрібні всі ці лагметери та лічильники юзерів на каналі. Так що поїхали.

EVENTS

Список подій ти можеш викликати, клікнувши на кнопку Events у вікні PIRCH-а.

Давай-но тепер з тобою зрозуміємо, як ці самі евенти працюють. Отже, у тебе є вікно, розділене на 3 частини. У лівій частині у тебе список подій. Ти можеш давати їм будь-які назви, але важливо одне – вони, зауваж, все пронумеровані. У випадку, коли відбувається якесь подія, PIRCH починає шукати команди до цієї події з перших Евентов (верх списку) до останніх (кінець списку). Тому основні евенти потрібно прописувати з найменшим числом.

Заплутався? Не проблема. Говорячи простіше, всі події, які відбуваються частіше за все, ти повинен прописати в Евент з номерами 000 або 001, а ось події, які відбуваються рідше, – в евент з номерами 666 або 999. Тобто свій PhrIenD $ L1sT ти повинен поставити десь в центральну частину Евентов (у мене це евент 400), а ось захист від банів і кіків якомога ближче до початку (у мене це евент 002). До речі, маленький хинт: найпершим евент, з найменшим номером став default, в якому будуть абсолютна чистота і порожнеча. Він тобі ще стане в нагоді, повір.

Тепер перейдемо до інших частин віконця. Верхня права частина – це список користувачів, на яких спрацьовує подія. Якщо ти туди поставиш “*! * @ *” (Без лапок), то евент буде спрацьовувати на всіх. Якщо ж ти вкажеш якусь іншу маску (по ніку або хосту), то евент буде спрацьовувати тільки на людей з такою маскою (тобто з таким ніком або хостом). У моєму прикладі, під номером 002, йде евент “Все” з маскою “*! * @ *”, Який спрацьовує на всіх інших чатлан.

Тепер розглянемо нижнє праве віконце. Це і є самі евенти. Тобто список подій, які спрацьовують на юзера, якого ти вказав. Пройдемося по найпростішим з них.

ON TEXT – евент, що спрацьовує на появу певного тексту в каналі або будь-якому іншому віконці. Формат такий: ON TEXT: * mirc *: #: / msg # = SINtez Russin Script = засік слово mIRC в каналі … хм … mIRC = May I Recive a Copy of PIRCH!!!!

Поясню: спочатку йде сама подія ON TEXT, потім двокрапку, після якого ти пояснюєш PIRCH-у, що і де має відбуватися на цю подію. Як бачиш, у мене там стоїть “* mirc *”, яке означає, що подія спрацює на будь-який текст, що містить слово mirc. Причому, зірочки на початку і в кінці слова показують Пирч, що цей вислів може міститися всередині слова (зірочка спочатку – будь-який текст перед словом, в кінці – будь-який текст після слова). Тобто якщо ти поставиш в такий евент слово “ламер”, то скрипт буде спрацьовувати тільки на окремо стоїть слово ламер. А от якщо ти поставиш “Ламер *”, то скрипт буде реагувати і на “ламеру”, і на “ламерів” і т.д.

Далі в евент варто двокрапка, що показує, що текст закінчений, а потім стоїть знак “#”. Цей знак показує, що подія спрацьовує в будь-якому каналі, на якому ти знаходишся. Якщо замість “#” ти поставиш зірочку, то подія буде спрацьовувати на будь-яке вікно, яке в тебе відкрито, в тому числі і вікна приватов.

Далі знову стоїть двокрапка, що показує, що опис, де цей евент буде спрацьовувати, закінчено, і після нього йдуть уже безпосередньо команди, які повинні виконуватися. В моєму випадку скрипт посилає в канал (значок #) мессадж “= SINtez Russin Script = засік слово mIRC в каналі … хм … mIRC = May I Recive a Copy of PIRCH!! “.

Ось так. Все, як бачиш, не так вже й складно. А ось тепер давай перейдемо до більш складним евент.

ON KICK – це подія спрацьовує на БУДЬ кік в каналі. Тобто не тільки коли кікнулі тебе, але і коли кікнулі будь-якого іншого чола. Тобі цей евент знадобиться тільки для захисту своїх друзів, яких ти пропишеш в свій pHr1end $ L1sT, але це вже окрема історія. Тому ми розглянемо інший евент, який набагато ближче до тебе, коханого.

ON KICKED – ось він! Евент, що спрацьовує, коли якась гадина кікнула саме тебе. Формат у евент такий же, як і в ON TEXT (до речі, у них у всіх один формат), за винятком маленької поправки. Якщо перед цим евент ти поставив знак @, ось так: @ ON KICKED, то евент буде спрацьовувати тільки якщо ти ОП на каналі. Якщо ти цей значок не поставиш, то евент намагатиметься спрацювати в будь-якому випадку.

У моїй версії цей евент працює ось так:

@ ON KICKED: *: # :/ chanserv unban # | / chanserv deop # $ nick | / join # | / chanserv op # $ me | / timer $ nick 1 60 | / kick # $ nick (= SINtez Russian Script =) Ще РА3 кіКнеШь і ти в $ hiT L! $ tE!

Пояснюю – я зазвичай сиджу на сітці DalNet, де фунцікліруют всякі боти типу ChanServ-а і NickServ-а. Тому, коли мене хтось кікнет (то він відразу покійник :))), скрипт посилає ChanServ-у команду деопнуть кривдника ($ nick – це змінна, яка записується в пам’ять і несе в собі нік людини, яка тебе кікнул). Потім намагається зайти на канал (/ join #). Причому, зауваж, команди відокремлюються знаком “|”, Який означає перехід на новий рядок. Потім наказує Чансерву опнуть мене (/ chanserv op # $ me. Де $ me – змінна, яка зберігає в пам’яті мій нік). Потім, через те, що модемна зв’язок дає тобі лаг (гальмування) і твої команди не виконуються відразу, включає таймер на нік кривдника (ім’я таймера можеш ставити будь-яке, але мені зручніше називати їх по імені ворогів). У таймері показується, що він спрацює з циклом 1 раз на 60 мілісекунд (тобто на одну секунду). Потім, як тільки таймер закінчиться (тобто через секунду), скрипт намагається кікнути кривдника (зазвичай секунди вистачає на те, щоб повернутися на канал). Все ясно? Якщо ні, то прочитай цей абзай ще раз, а якщо так, то підемо далі.

ON BAN – подія, що спрацьовує на будь бан в каналі. На жаль, в Пирч немає команди ON BANNED, а перекрутити іншими способами я не зміг (хоча, можливо, хтось зміг). Тому в мене не вийшло налаштувати свій скрипт реагувати, коли банять тільки мене, і він у мене реагує на будь-бан, намагаючись захистити господаря. Але не будемо відволікатися. У мене ця подія виглядає ось так:

ON BAN:*:#:/chanserv unban #

Тобто якщо хтось поставив бан, то скрипт дає команду чансерву отбаніть мене. Зауваж, я не став це вносити на подію ON KICKED, хоча, найчастіше, після бана слід кік. А все через те, що я намагаюся випередити ворога. Тобто як тільки він мене забанить, скрипт мене отбанівает. А коли він мене кікнет, мій скрипт вже почне операцію по поверненню в канал і покаранню засранця. До того ж, бувають таки випадки, коли тебе банять, але не Кіка, тому краще всі події розділяти, а не заганяти все в одну велику купу лайна. Якщо ти дуже войовничий боєць, то можеш додати в подія ON BAN покарання. Тоді, якщо встигнеш, то зможеш викинути кривдника, не чекаючи, поки це зробить він. Я цього робити не став, тому що на модемного зв’язку це найчастіше не встигнути.

Далі. ON DEOPED – спрацьовує тоді, коли якась зараза зняла з тебе статус Оператора. В моєму випадку я не починаю відразу розгортати артилерію, а просто попереджаю кривдника:

ON DEOPED: # :/ chanserv op # $ me | / chanserv deop # $ nick | / notice $ nick (= SINtez Russian Script =) ти поки п0ШутІ так … д0 п0явЛеНіЯ тебе в $ hiT Li $ Te!

Дивись: якщо хтось мене деопнул, то скрипт, через чансерв, намагається мене опнуть. Потім він Деопіт (через той же чансерв) цього виродка, а потім кидає йому приватний нотис “(= SINtez Russian Script =) Ти поки п0ШутІ так … д0 п0явЛеНіЯ тебе в $ hiT Li $ Te! “. Якщо ти злий чувак, то можеш поставити замість попереджень всякі кікі і бани.

ON OPED – спрацьовує, коли хтось тебе опнул. В моєму випадку я говорю чуваку “Спасибо”:

ON OPED: # :/ notice $ nick Спасибі за @

Ну що ж, це, мабуть, основні евенти, які тобі потрібні. Звичайно ж, цих самих Евентов існує ціла купа, але багато хто з них тобі ніколи не знадобляться. Хоча … Якщо ти хочеш виглядати супер-чолом, просто агентом 007, то раджу тобі створити ще один евент. У мене це 030-SiN-ІНФО. У цьому евент можна управляти запитами користувачів на твою версію, назва IRC-клієнта і інфу про тебе самому.

VERSION – цей CTCP команда, яку виконує інший юзверя, намагаючись дізнатися інфу про твоє клієнта. Якщо у тебе включений режим CTCP, то він дізнається, що в тебе стоїть PIRCH такий-то версії. Але ти можеш не показувати йому цю секретну інформацію, а прикинутися гуру IRC. Зморив:

VERSION:/notice $nick \-1 VERSION \-1 \-2 PIRCH98 Powered by =SINtez Russian Script= \-2 :-

В моєму випадку на цей запит скрипт видає юзеру нотис, в якому пише “PIRCH98 Powered by = SINtez Russian Script =”. Причому, значки “\ -1” кажуть Пирч, що це слово треба виділити кольором інфи (як в стандартному відповіді клієнта). А знаки “\ -2” показують, що цей текст треба виділити Болден. А ось і найголовніше – в кінці команди стоять двокрапка і мінус. Це означає, що треба посилати у відповідь тільки ТВОЮ команду, а стандартна відповідь глушити. Якщо замість мінуса ти поставиш плюс, то будуть видаватися обидві відповіді. Точно так само працюють і USERINFO, і CLIENTINFO.

Гаразд, я думаю, що з основними поняттями Евентов ти розібрався. Якщо тобі захочеться проапгрейдить свої знання – лізь в хелпи. Тобі буде вже простіше, тому що всі інші евенти працюють за такою ж системою.

ALIASES

Щоб викликати список алаізісов, тисни на кнопку з цією назвою у вікні Пирч. Тут все ще простіше. Зліва список назв алаізісов, праворуч команди, які вони виконують.

Створюєш алаізіс, припустимо, “xakep”. Потім клацаєш на ньому мишкою і прописувати в правому вікні всі команди, які ти хочеш виконати для цього алаізіса. Ну, наприклад: / join # xakep | / msg Здарова хлопці! Ось я і на хакера! Як справи? | / Me радий вас всіх бачити.

Але насамперед створи ось такий алаізіс:

Назва: “j”. Команда: / join $ # $ $ 1

Тобто коли ти набереш “/ j xakep”, то скрипт запустить алаізіс “j”, в якому прописано, що потрібно виконати команду / join, потім поставити значок “#”, потім поставити перші слово, яке ти ввів після алаізіса.

Взагалі, до будь алаізісу можна прісобачівать введені слова. $ $ 1 – це перше слово, $ $ 2 – друге і так далі. Тому, якщо ти створиш алаізіс “b”, який буде банити людей, то команду пропиши туди ось таку: / ban # $ $ 1. Тоді, ввівши в каналі “/ b Vasya”, твій скрипт відразу ж забанить чувака з ніком Vasya.

Ну, з алаізісамі все просто, тут і пояснювати нічого. Перейдемо до Popups-ам.

POPUPS

Ну ось, ми і дісталися до менюшек. Менюшки, мабуть, друга за зручності річ після Евентов. Створені вони для Віндусоідов, які не звикли щось набирати ручками і хочуть всього добитися, клацаючи мишкою. Ну раз хочеш – будь ласка!

Твої попупси розділені на кілька закладок: Server Window (Вікно статусу), Channel (Names List) (Вікно каналу (Список імен юзерів)), Channel (Main Pane) (Вікно каналу (Головна панель, тобто та, де текст) ), Private Msg / DCC (Вікно Привату або DCC чату) і Main Menu (Головне меню).

Нас з тобою насамперед цікавить закладка “Channel (Names List)”. Тому як, якшо в каналі на нік якогось чувака правою кнопкою миші, у тебе з’явиться саме ця менюшка, і все кікі-бани і т.д. потрібно засовувати саме туди. Приступимо.

Першою строчкою у мене стоїть: Звернення: $ $ 1> $? = Text

Тобто у мене в менюшки є пункт “Звернення”, і коли я на нього гукну, з’явиться віконце введення тексту, який пошле чуваку.

$ $ 1 – ник чувака в списку, на якого я клікнув. “>” – Показує, що після ника потрібно поставити цей знак. “$? = Text” – показує, що потрібно вивести вікно введення тексту.

Далі ще цікавіше. Дивись:

[[Керуван @ ня каналів]]

.MassOp: /mop

.MassDeOp: /mdop

.MassDeOpBan: /mdopb

.MassBan: /mban

.MassIPBan: /mban2

.MassDeBan: /mdban

.MassWar: /mdopbk

.-

Першим рядком у мене йде назва пункту меню ([[Керуван @ ня каналів]]). Потім йде “. MassOp: / mop”. Ось тут пригальмуємо. Точка на початку цієї фрази означає, що це підменю. Тобто коли ти вибереш пункт “[[Керуван @ ня каналів]]”, у тебе вивалиться підменю, в якому буде наступний список. У моєму випадку це все МассБани. Після кожного назви варто двокрапка, що показують, що назва менюшки закінчилося і починається команда. Далі, через пробіл, йде сама команда. У моєму випадку це алаізіс, але ти можеш прописати туди і повну команду. А тепер подивись на останню сходинку. Там точка і мінус. Це означає, що тут в менюшки потрібно поставити розділову смужку.

Взагалі, ти можеш створювати ціле дерево подменюшек. Кожен наступний виток відділяється великою кількістю точок. Тобто подменюшка першого рівня – одна точка спочатку. Другого – дві. І так далі. Дивись, як це у мене:

[[ uSer-c0NtRoL ]]

.Ban

..Ident, Port & Server: /ban1 $$1

..Ident, Server: /ban2 $$1

..Port, Server: /ban3 $$1

..Nick: /ban4 $$1

..Server: /ban5 $$1

.UnBan

..Ident, Port & Server:/unban1 $$1

..Port, Server:/unban3 $$1

Бачиш, у мене в пункті “[[uSer-c0NtRoL]]” відкривається підменю з двома підпунктами – Ban і UnBan, а в цих підпунктах ще підменю. І так можна до нескінченності (а тобі це треба? :)).

В принципі це все. Запам’ятай, що попупси реагують на змінну $ $ 1 – яка означає ім’я чувака, якого ти вибрав в списку юзерів.

Спасибі, я скінчив

Ну що, для початку, я думаю, вистачить. Звичайно ж, роблячи цю статтю, я не ставив собі завдання навчити тебе скриптам на професійному рівні. Для цього знадобився б весь журнал. Але основи я тобі розповів, так що дерзай. Якщо захочеш чогось більшого – лізь в хелпи і відвідуй канал # pirch, де ти зможеш отримати відповіді майже на всі свої запитання (а ті, які в стилі “чому мене дівчата не люблять”, краще побережи для інших каналів :)).

Якщо зовсім труба – шукай мене на DalNet, канал # xakep. Чим зможу – допоможу.

Дякую, що прочитав до кінця. Щасти тобі!

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*