Регистрация | Вход
Меню сайта


Категории

Информация
irc.ircluxe.ru #bots
Бот обновлён: 08.02.15



Опрос
На чём у вас бот?
[ Результаты · Ответов: 987 ]

Главная » Решения (FAQ) [ Добавить вопрос ]


EggDrop1.6.21 - исходник бота последней версии.

SP - данный патч предназначен для устранения проблем с национальными символами.  С ним запуск бота должен осуществлён в локали cp1251 и порт irc-сервера должен быть для cp1251.
TCL8.6.5 - необходимая библиотека для работы бота.
 
Начать следует с:
1. Убедиться, что если вы сделаете всё верно, то у вас всё будет работать, как у нас ->  http://windrop.clan.su/test.html
2. Ознакомиться с Решениями -> http://windrop.clan.su/faq <- здесь собраны наиболее частые проблемы и вопросы при установки и использования бота, очень важно с ними ознакомиться ещё до самой установки.
3. Если вы собираетесь использовать бота на Windows (ваш комп например), то используйте эту инструкцию -> http://windrop.clan.su/index/0-4 а если на UNIX (shell (vds) например), то -> http://windrop.clan.su/index/0-8 <- лишнего там нет, все действия должны быть строго выполнены и выполнены верно.
 
После 3-х простых действий у вас имеется полностью укомплектованный бот. Для поддержания его работоспособности требуется обновление в автоматическом режиме (указывается в конфиге) либо командой !обновить <- обновления выходят достаточно часто, два раза в неделю как минимум.
 
Вся необходимая информация по скриптам что имеются в боте, находится на главной странице этого сайта, а именно название скрипта, его флаг и описание, выводится при наведении курсора на команду.
 
В остальном вам помогут на нашем форуме или канале.

Самый оптимальный вариант для бота стоит 3$ в месяц - тариф Меркурий (1 ядро; 10 ГБ; 512 МБ) [Debian-7-amd64].

Не используйте бесплатные/платные шеллы, их возможностей и вашего уровня доступа не хватит для нормальной работы бота. Вам же не нужны лишние ограничения и ошибки в системе?

Что отвечает за кодировку:
1. Порт у irc-сервера должен быть для cp1251 (чаще всего это 6667 или 6669)
2. Если бот на unix, то он должен быть запущен командой: ./eggdrop.sh или ./eggdrop-m.sh (в них указана правильная локаль)
3. Если у вас бот при запуске этими файлами запускается не в кодировке "cp1251" (Проверить можно командой !инфа (!info) или !tcl encoding system), то попробуйте в eggdrop.sh и eggdrop-m.sh заменить: LANG=ru_RU.CP1251 на: LC_ALL=ru_RU.CP1251
4. WPack ставить нужно только на EggDrop1.6.21-SP11 с этого сайта. Возможно ваш вариант без SP.
5. Ни в конфиге, ни в ваших скриптах не должно быть строки "encoding system ...".

P.S: Если только часть сообщения отображается не в той кодировке или например не работает !син это значит что бот запускался до этого не правильно (не тот порт, не та локаль) и успел записать в свои базы кракозябры. Что в этом случае можно посоветовать? Очистить вручную эти базы или переустановить бота.

Бот вас не признает только в том случае, если не совпадёт ваш хост с теми, что прописаны на ваш ник (handle).

Для того чтобы добавить новый хост, надо под тем ником (handle), который известен боту, написать в приват: identauth пароль. Затем можно посмотреть в !whois какие хосты имеются и отредактировать командами: !±хост.

Как вы уже наверно поняли, у вас не получится добавить овнера назначением флага "n" через скрипт управления, так как это не безопасно. Чтобы добавить нового овнера, надо вписать его ник в eggdrop.conf в параметр "set owner" и добавить в бота командой !+юзер ник. Далее бот напишет этому юзеру в приват с предложением установить пароль, после этого надо установить пароль pass пароль и авторизироваться командой auth пароль и юзер станет полноценным овнером.

Важно: Если вы ставите флаг "P" (перманентная авторизация), то не стоит добавлять хосты состоящие только из ника или идента или того и другого.

Простой пример: у вас один из хостов в !whois ввида ник!*@* вроде бы удобно, так как у вас динамичный ip и бот вас всегда признаёт, вы выходите из сети и любой человек может взять ваш ник и управлять ботом. За то время, пока сервисы не сменят ник, можно много чего успеть или сервисов вовсе может не быть. Конечно, полный, уникальный хост не проблема для иркопов, в нормальных сетях об этом думать не стоит или просто не использовать флаг "P", а каждый раз проходить авторизацию с использованием пароля, который, кстати, при желании может подглядеть админ сервера.

Изначально бот использует примерно 25 мегабайт оперативной памяти (это скрипты, модули, некоторые базы данных), а дальше всё зависит от активности пользователей и каналов на боте, бот загрузит различные базы для игр и тем самым увеличит размер примерно до 50 мегабайт, но это всё мелочи, по мере активности пользователей будут заполняться базы с различной информацией и здесь уже всё зависит только от этого, бот может использовать и 500 мегабайт и 1000 и это не зависит от количества скриптов, столько может использовать даже 1 скрипт у которого база с более миллионом записей . В среднем нужно 100 мегабайт для бота.

1) Отключаем бота командой !die если потеряна идентификация то:
-win: Ctrl+Alt+Delete -> Процессы - завершаем процес eggdrop.
-unix: Узнаём pid номер бота - в корне бота файл pid.ник_бота или командой ps x затем kill пид_номер (Если у вас один бот то можно: kill -9 `ps U$USER | grep egg| awk '{print $1}'`
2) Находим запись о вашем аккаунте в bot.user
3) Удаляем в ней строку начинающуюся с "--PASS" 
4) Запускаем бота и вводим в чате /msg ник_бота pass пароль 

Бот покидает канал в том случае если данный канал у него не прописан, например при соединении с сервером часто бывает автоджойн, в этом случае бота насильно затащит на данный канал, но он покинет его так как его нет в bot.chan. Аналогично будет и с линкованым каналом.

Но чаще всего бывает ошибка при добавлении канала, например в названии канала используются русские буквы аналогичные английским или наоборот или разный регистр тоже может повлиять если у вас не установлена русская локаль на сервере. По-этому лучше всего при добавлении канала копировать название канала в клиенте, а не набирать самому.

Кратко: Устанавливаем новую версию, заменяем поверх папку data и файлы: bot.user, bot.chan.

Подробно: В папке data почти все данные (очки, пик, цитаты, хелпы, фразы и т.д.).
Внимание: в некоторых версиях бота, сами базы обновляются или формат записи, поэтому тут уж смотрите сами, при замене файлов, на старые, могут возникнуть ошибки.  

База юзеров, банов и игроков викторины находятся в файле bot.user. В bot.chan хранятся каналы и их установки.

Если у вас включено обучение мегахала то в старой папке megahal находим файл megahal.msg и переименовываем его в megahal.trn затем переносим в новую папку.
Если новый бот уже запускался то нужно при выключенным боте удалить файлы megahal.brn и megahal.brn~bak затем заменить megahal.trn как описано выше.

Информация выводимая командой !хелп меняется тут: scripts/info/help.tcl
А так же есть ещё один список который выводит одну команду при входе на канал, он находится в скрипте scripts/info/count.tcl

Раскоментировать параметры отвечающие за настройку времени в eggdrop.conf, указать нужное значение в set offset, бота следует перезапустить (!die).

# Настройка времени. (закомментировано)
#set offset "-6"
#set timezone "GMT"
#set env(TZ) "$timezone $offset"

P.S: Если время не меняется у бота при изменении значения в set offset (проверить можно набрав !инфа), то нужно убрать пробел из set env(TZ) "$timezone$offset" 

Можно отключить приват командой "!приват выкл" и тогда только овнер сможет воспользоваться приватными командами.

Ещё можно настроить скрипт antiflood.tcl в строке variable aflset {+ 6 30 RD 3} здесь установлено, что при 6 сообщениях в приват за 30 секунд будут выставлены флаги RD на 3 минуты. (флаг R принимает сообщения только от зарегистрированных, а флаг D вообще игнорирует все приватные сообщения, этот флаг есть не во всех сетях или может по другому обозначаться, например в далнете это флаг g)

Так же можно в eggdrop.conf в строке putquick "MODE $botnick +B" добавить флаг D для автоматического его назначения.

В scripts/info/count.tcl находим строку: "putserv "NOTICE $nick :........" и изменяем её.

1. Ознакомиться с тем, что написано внутри самого скрипта, открыв его, обычно в начале файла идет описание настроек и переменные для изменения этих настроек.
2. Внести поправки в настройки, если таковые имеются, чтобы скрипт отвечал вашим нуждам, а не базовым настройкам.
3. Положить скрипт в директорию scripts вашего бота.
4. В директории scripts паки games, info, protection, system являются авто-загрузочными. Т.е. положив скрипт в них, вам не надо его прописывать в конфиге. Если же вы положили скрипт в корень директории scripts то в eggdrop.conf в блок скриптов вписать нужно строку: source scripts/скрипт.tcl
5. Перезапустить бота командой !restart  или !загрузка скрипт.tcl

На канале набираем:
!set +флаг - отключение скрипта.
!set -флаг - включение скрипта.

Список флагов можно узнать командой:
!chaninfo no*
Или набрать на канале:
!хелп флаги

Отключение ВСЕХ скриптов кроме самого скрипта отключения выполняется командой "!скрипты -" на канале, для включения "!скрипты +".

Банит чей ник изменён сервисами на Guest????, а также постоянно удерживает бан на канале:
!ban Guest*!*@* 0 Смени ник! stick

Банит чей ник очень длинный:
!ban ??????????????????*!*@* 0 Длина ника превышает норму (макс. 18 символов). Поменяйте и перезайдите.

Бан по имени:
!regban -name {^имя$} -ban 3 -kick {Плохое имя}

Банит всех кто с указанного сервера:
!regban -server {^irc\.server\.ru$} -ban 3 -kick {Плохой сервер}

Банит всех кто не с указаного сервера:
!regban -server {^(?!irc\.server\.ru)(.*?)$} -ban 3 -kick {Используй irc.server.ru}

Немного о RegExp:
^ - начало строки
$ - конец строки
* - ноль или более 
+ - одно или более 
? - ноль или одно
\ - экранирование
. - любой символ кроме переводов строки
(.+?) и (.*?) - любой текст

Чтобы убрать автоматическое снятие бана на канале через определенный промежуток времени напишите команду в патилайне:
.chanset #канал ban-time 0 
или на канале:
!set ban-time 0

Прочитать:
!helps -c -g amode
!helps amodeadd

и ввести на канале:
!amodeadd +v *!*@*

Установить флаг F или f, с этой просьбой нужно обратиться к администрации вашей сети. Или попросить чтобы прописали на сервере (класс по маске) с более большими параметрами.
Также с этим флагом бот будет мгновенно отправлять сообщения в приват, не зависимо от количества строк. При этом установите значение в конфиге бота: set msg-rate 0 

Или отключите скрипт system/putserv_vs_putfast.tcl

1. Создаём на боте юзера Services. Пишем в PuTTY .+user services маска.
Например: .+user services *!*@service@ircnetwork.ru
2. Теперь нужно назначить флаг, для того чтобы бот не считал сообщения от этого юзера флудом. Пишем .chattr services +f

Есть 3 решения: 
1. Убрать сервисного бота с канала и научиться пользоваться этим ботом. 
2. Прописать сервисного бота на боте и дать ему глобал f
3. На канале набрать !set +nodesynch

Нужно поменять кодировку -> Окно -> Кодировка -> Выбираем: Win1251 (Cyrilic)

У многих задаётся сразу вопрос: "А зачем боту бнц?". Иногда оно просто необходимо, часто бывает так, что IP бота забанен сервисами/сервером по разным причинам и чтобы попасть в сеть приходиться заходить через bnc или просто ради другого ипа/хоста. А так же может понадобится для управления бнц-сервером, если поставить для этого скрипт. 

В eggdrop.conf изменяем параметры:
set username "логин"
set servers { бнц.сервер.ру:порт:пароль }

Если бнц меняет ник при отключении бота, то измените:
set keep-nick 0
на
set keep-nick 1
чтобы бот возвращал свой ник при следующем соединении.

cd
cd eggdrop/scripts
./autobotchk eggdrop.conf -noemail -5

Открываем файл ботнет-ник.botchk в корне бота и заменяем:
botscript="eggdrop eggdrop.conf"
на:
botscript="eggdrop.sh"

Установим права:
cd
cd eggdrop
chmod +x ботнет-ник.botchk

Если вы наблюдаете следующие сообщения, при запуске бота:

* Last context: megahal:megahal.c/512 []
* Please REPORT this BUG!
* Check doc/BUG-REPORT on how to do so.
* Wrote DEBUG
* SEGMENT VIOLATION -- CRASHING!

В этом случае запускать бота нужно так:
LANG=ru_RU.CP1251 LC_TIME=en_US env MALLOC_OPTIONS='Dm' ./eggdrop

То есть надо в eggdrop.sh и в eggdrop-m.sh добавить:
env MALLOC_OPTIONS='Dm' перед ./eggdrop

У вас есть два бота и вы хотите их слинковать:

Первый бот: Windrop (botnet-nick) c хостом windrop.clan.su (PuTTy) и портом 8850
Второй бот: Eggdrop (botnet-nick) c хостом eggdrop.clan.su (PuTTy) и портом 8855

Первому боту пишем:
!addbot Eggdrop eggdrop.clan.su:8855
Второму боту пишем:
!addbot Windrop windrop.clan.su:8850

Чтобы боты слинковывались автоматически нужно указать хаб-бота, например таким ботом у нас будет первый (Windrop) значит второму (Eggdrop) пишем: 
!botattr Windrop +h
Делаем рестарт любому боту.

Список команд по ботнету можно узнать командой: !helps -g botnet


Что может дать Botnet:

1. Разделение файла пользователей между ботами (Sharing). Это когда файл пользователей будет вести один бот (MasterBot), а другие боты (ShareBots) будут просто из него черпать информацию.

2. Можно просто объединить ботов для общего partyline. Тогда люди имеющие доступ на разных ботах к partyline смогут видеть и общаться с пользователями других ботов.

3. Создавать сетевые сервисы. Например, сетевой seen, когда пользователь запросив информацию о последнем местонахождении интересующего его человека получит ответ от бота, который в свою очередь посмотрит в своей базе, а также спросит по Botnet у других ботов. Тем самым можно получить более информативный ответ.

4. Управление всеми ботами через одного бота.

1. Допустим бот по каким-то причинам не может подключиться к ирк-серверу, в этом случае ctcp бесполезен.
2. Бот подключился к серверу но с другим ником и в этом случае к кому вы будете подключаться через ctcp?
3. Сейчас вы используете виндроп, а завтра купите vds и вам в любому случае нужен будет PuTTY для подключения к серверу.
4. Так или иначе в инструкциях рассматриваются оба способа, выбирать вам.

Нужен для работы с сайтами по протоколу HTTPS. Парочка скриптов используют этот пакет, один из них в сборке, это title.tcl. Если установить пакет, то бот будет выводить титл таких сайтов.
 
Устанавливаем на unix от root:
apt-get install libssl-dev
wget http://dfn.dl.sourceforge.net/sourceforge/tls/tls1.6.7-src.tar.gz
tar -xzf tls1.6.7-src.tar.gz
cd tls1.6.7
./configure
make
make install
 
Проверить можно командой: .tcl package req tls

locale -a | grep ru_RU - для просмотра русских локалей на сервере.

-Debian:
От root на сервере:
localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
Располагается либо в /usr/lib/locale/ либо /usr/share/locale/

-Ubuntu:
От root на сервере:
apt-get install language-pack-ru-base
echo "ru_RU.CP1251 CP1251" >>/var/lib/locales/supported.d/ru 
locale-gen

В eggdrop.sh и eggdrop-m.sh заменяем:
LANG=ru_RU.CP1251
на:
LC_ALL=ru_RU.CP1251

1. Включаем запись логов в конфиге бота:
logfile jpk #имя_канала "logs/имя_канала.log"

2. Устанавливаем настроенный pisg.
Скачиваем:
wget http://windrop.clan.su/pisg.tar.gz
Распаковываем:
tar -xzf pisg.tar.gz
Удаляем архив:
rm -rf pisg.tar.gz

3. Настраеваем под себя pisg.cfg, переносим папку gfx с картинками туда где будет стата.
Переходим в папку:
cd pisg
Генерируем страничку командой:
./pisg

4. Добавляем в кронтаб pisg.
Заходим:
crontab -e
i
Добавляем строку чтобы генерировать статистику раз в сутки:
0 */24 * * * /папка/до/писга/pisg -co /папка/до/конфига/писга/pisg.cfg
*Если уже есть строки в кронтабе, то создаём новую строку: ^ + O Удалить строку можно командой: dd
Жмём: Esc
Чтобы сохранить и выйти набираем:
:
wq
*Если у вас не работают команды: i, dd и тд, то у вас другой редактор в котором не сложно разобраться.