Введение кармы на формуме — неплохой повод для создания простенького форумного бота. Карма нужна всем, особенно вам, вашим друзьям и вашим врагам. Но просыпаться каждые три часа и исправлять мировую карму есть возможность не у всех. А значит, если в некоторых темах типа «Считаем до миллиона» боты оставляют сообщения, то автоматизировать процесс кармления сам бог велел.
Итак. Что должен уметь бот?
1) Заходить на форум под вашим аккаунтом.
2) Помнить список плюсуемых и минусуемых.
3) Уметь находить ссылки для изменения кармы нужного пользователя и переходить по ним.
4) Делать все это с заданной периодичностью.
Выбор средств и вариантов реализации:
1) Пользовательский JavaScript, запускаемый непосредственно в браузере. Механизм запуска пользовательских скриптов зависит от браузера. Основное преимущество — отсутствие мороки с логином и кукисами, встроенные средства для работы со структурой html.
2) Бот как самостоятельная программа-клиент. Подойдет любой язык, поддерживающий работу с сокетами и (желательно) имеющий библилтеку для работы с протоколом http с поддержкой печенек. Плюс: при желании, можно сделать очень легковесным. Минус: сложности с залогиниванием (должен либо каким-то образом стащить кукисы из браузера, либо уметь заходить непосредственно по логину-паролю, либо содержать в себе перехватывающий кукисы прокси-сервер, через который пользователь залогинивается).
3) Бот-плагин для ФФ (интересно, на чем их пишут?). Примерно то же, что и (1), но круче (?).
Итак, приступим. Конструктивная критика и фрагменты кода приветствуются. Обсуждение моральных аспектов ботоводства и кармы — в других темах.
Хочу другую тему. Я на аг.ру когда-то давно скриптом кармообмен проводил. Вышел почти на верхушку, а потом сам же сбросил всё спровоцировав один баг (хе-хе). Короче, было весело. Даже интересно, осталось ли у меня что-то с тех времён.
Файрфокс, к примеру, куки не прячет. И Юзер-Эйджент тоже.
За ботов, раздающих карму, можно и забанить.
А так в принципе могу поделиться опытом. Даже не опытом, а самим кодом могу поделиться.
Плохая новость: ссылки для изменения кармы работают лишь ограниченное время в пределах сессии. Т.е., нельзя просто тупо насобирать ссылок для изменения кармы и периодически делать переход к ним (что было бы проще, чем описанная выше методика), как и нельзя перебросить их из броузера в броузер или задействовать wget (хотя, если разобраться с форматом хранения кукисов... Впрочем, это все равно нас не освобождает от необходимости парсить страницу).
IE6 позволяет экспортировать кукисы в формат, совместимый с (wiki/en) Wget (http://en.wikipedia.org/wiki/Wget) . Делать это приходится вручную (возможно, где-то зарыта возможность экспортировать куки программно — не проверял; еще есть папка Cookies в Documents and Settings\%username%, но хранимые там файлы несовместимы с wget). Меню Файл->Импорт/экспорт... и далее через мастер.
У wget есть опции для работы с cookies:
--load-cookies=FILE load cookies from FILE before session.
--save-cookies=FILE save cookies to FILE after session.
Если в качестве файла указать экспортированные из ІЕ куки, то wget сможет зайти на форум под тем же логином, который используется в ІЕ.
Поскольку мне лень делать поиск пользователя по имени и поиск его сообщений, сделаем проще: бот будет в качестве входного параметра получать ссылку на сообщение на форуме, возле которого отображается информация о пользователе, в т.ч. и его карма. Например, чтобы проплюсовать меня, бот получает ссылку http://lingvoforum.net/index.php/topic,37019.msg961761.html#msg961761 (http://lingvoforum.net/index.php/topic,37019.msg961761.html#msg961761)(разумеется, из-под моего аккаунта бот плюсовать меня не сможет — пусть это делают другие). В html-коде страницы эта ссылка идет после кармы, а не до нее. Таким образом, нам нужна последняя пара карма-ссылок перед тэгом с заданной ссылкой.
http://lingvoforum.net/index.php?action=modifykarma;sa=applaud;uid=1408;topic=37019.0;m=961761;a2f51ad90=c4a60611cbc7329aead319c30ffba1f3
Ага, значит, где-то должно запоминаться, за какие посты усера {плю|мину}совали.
Реквестирую статистику!
Цитата: RawonaM от августа 6, 2011, 10:16
За ботов, раздающих карму, можно и забанить.
:+1:
Цитата: Bhudh от августа 6, 2011, 16:45
Ага, значит, где-то должно запоминаться, за какие посты усера {плю|мину}совали.
Реквестирую статистику!
Вы уверены, что плюминусы расставляют по постам не от фонаря?
Цитата: ginkgo от Вы уверены<...>?
Цитата: Bhudh от topic=37019.0;m=961761;
Это нумер поста.
Цитата: Bhudh от августа 6, 2011, 17:53
Это нумер поста.
Я понимаю. Но нет гарантии, что плю(мину)сики нажаты не в первом попавшемся посте по(не)любившегося юзера, т.е. что нумер поста имеет значение для оценки именно этого поста.
Ну, тут равновероятно...
Топик и номер сообщения нужны лишь для возврата к нужной точке форума. Только что проверял: если их выбросить их из ссылки, карма изменяется, но отображается какая-то левая страница.
Цитата: Python от августа 6, 2011, 02:27
Итак. Что должен уметь бот?
1) Заходить на форум под вашим аккаунтом.
2) Помнить список плюсуемых и минусуемых.
3) Уметь находить ссылки для изменения кармы нужного пользователя и переходить по ним.
4) Делать все это с заданной периодичностью.
;up: :D
Хм. Кажется, все даже проще, чем я думал: самый интересный параметр с кучей цифр и букв — один и тот же во всех кармассылках в пределах одной сессии. uid берем из профиля плюсуемого/минусуемого пользователя. Все остальное (action=modifykarma;sa=applaud; или ...;sa=smite;) понятно без перевода.
Цитата: Python от отображается какая-то левая страница
Эта:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>...</title>
<script type="text/javascript"><!-- // --><![CDATA[
history.go(-1);
// ]]></script>
</head>
<body>«</body>
</html>
?
Да.
Итак, скрипт для одновременного плюсования и минусования кармы нескольких пользователей. Написан в виде батника с использованием программ из (wiki/en) UnxUtils (http://en.wikipedia.org/wiki/UnxUtils) (кроме wget более поздней версии, который я взял отсюда (https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip)), с некоторыми изменениями может использоваться на юниксах.
@echo off
set initpage=http:^//lingvoforum.net/index.php/topic,36979.150.html
wget --load-cookies=cookies.txt --save-cookies=cookies.txt -O lf.html %initpage%
grep modifykarma<lf.html|head -n1|sed -e s/.*m=[0-9]*;/"set session="/1 -e s/"[^^a-z0-9= ].*"// >setsession.bat
call setsession.bat
sed -e s/^^/http:\/\/lingvoforum.net\/index.php\?action=modifykarma;sa=applaud;uid=/g -e s/$/;%session%/g <applaud.txt >url.tmp
sed -e s/^^/http:\/\/lingvoforum.net\/index.php\?action=modifykarma;sa=smite;uid=/g -e s/$/;%session%/g <smite.txt >>url.tmp
wget --spider --load-cookies=cookies.txt --save-cookies=cookies.txt -i url.tmp
Строка 2:
initpage — любая страница форума, содержащая ссылки на карму. Это может быть любая тема, содержащая сообщения других пользователей.
Строка 3:
cookies.txt — файл cookies, экспортированный из ІЕ. Перед тем, как экспортировать, нужно залогиниться под себя в ІЕ. В Опере экспорт кукис отсутствует, в ФФ, насколько мне известно, для этой операции существует плагин. cookies.txt нужно положить в ту же папку, где находится файл скрипта.
wget загружает страницу в файл lf.html, используя куки
Строка 4:
В lf.html находим строчки с кармассылками (содержащими текст modifykarma) с помощью grep, оставляем лишь первую из них c помощью head, далее с помощью sed вырезаем начало (от начала строки до параметра m=цифры, включительно с «;» после него) и конец (начиная с кавычки и до конца строки), при этом вместо начала подставляем текст set session= и перенаправляем все в файл setsession.bat, который нам нужен, чтобы установить значение переменной.
Строка 5:
Вызываем сгенерированный файл, который устанавливает переменную session
Строки 6 и 7:
Генерация списка ссылок для изменения кармы. Файлы applaud.txt и smite.txt содержат список идентификаторов пользователей (т.е., цифры, которые идут в ссылке на профиль после u=), один идентификатор на строку. Для правильной работы необходимо, чтобы в файле applaud.txt была строка с текстом 1408, в файле smite.txt ее быть не должно ни в коем случае. В генерируемые ссылки подставляются идентификаторы пользователей, а также параметр сессии.
Строка 8:
Запускаем wget в режиме«паука», когда он открывает страницы на сайте, но не сохраняет их. Список ссылок берется из файла, который был сгенерирован предыдущими двумя строками.
Для полного счастья скрипту не хватает лишь часового механизма, запускающего его каждые 3 часа. Бот практически готов :)
Цитата: Python от Для правильной работы необходимо, чтобы в файле applaud.txt была строка с текстом 1408, в файле smite.txt ее быть не должно ни в коем случае.
:what:
Это защита от дурака такая?
Цитата: Python от августа 8, 2011, 01:35
Для правильной работы необходимо, чтобы в файле applaud.txt была строка с текстом 1408, в файле smite.txt ее быть не должно ни в коем случае.
А у меня со строкой 23802 работает... Каковую вещь аз творю не суразно?
Таки дочитали до этого места :)
Цитата: Python от августа 8, 2011, 01:35
Бот практически готов
дасте знати, коли буде альфа версія?
:) таки отключили карму
Значить, починаємо майструвати флудобота замість кармобота :)
Цитата: Python от августа 6, 2011, 02:27
Бот-плагин для ФФ (интересно, на чем их пишут?).
На JS.
Итак, часовой механизм. В WinXP для этого можно использовать планировщик, доступ к которому осуществляется командой schtasks.
Если наш скрипт лежит в файле d:\somedir\karmabot.bat, то для запуска его каждые три часа делаем следующее:
schtasks /create /tn karmabot /tr d:\somedir\karmabot.bat /sc minute /mo 181 /st 12:34:56
Вместо 180 минут или 3 часов я поставил 181 минуту — на случай, если время между запусками бота окажется на секунду меньше, чем ожидалось, и к нужному времени запрет на изменение кармы не закончится (лучше потерять минуту, чем 3 часа). Стартовое время (параметр /st) может быть любое — от 00:00:00 до 23:59:59, в режиме периодических повторов это не имеет значения. Параметр /tn — идентификатор задания. Может быть любым, при условии, что в других заданиях планировщика этот идентификатор не используется.
Чтобы выключить бота, вызываем команду:
schtasks /delete /tn karmabot
Поскольку карму прикрыли и кармабот остался без работы, приступим к созданию флудобота. В простейшем случае, флудобот вообще не читает сообщений на форуме, а просто периодически отправляет сообщения (например, «+1», «аффтар жжот», «:)», «таки да рувэ нэ» и пр.) в определенную тему фурума.
Попробую использовать тот же инструментарий, но задача выглядит более сложной, чем предыдущая. Прежде всего, форма отправки сообщений использует метод post, который передается несколько иначе. Нам нужно получить откуда-то сообщение (думаю использовать механизм входящего потока — так будет универсальнее) и направить его на форум, вместе с дополнительными параметрами, взятыми со страницы отправки сообщения. В общем, ничего сложного.
Собственно, в отправке данных методом POST ничего сложного нет — для этого у wget есть следующие опции:
--post-data=string
--post-file=file
Т.е., мы можем либо включить передаваемые данные непосредственно в строку команды, либо передать данные, хранимые в файле. Структура в обоих случаях будет одна и та же:
параметр₁=значение₁&параметр₂=значение₂&...&параметрn=значениеn
Значение представляет собой текст в url-кодировке (т.е., в котором спецсимволы и символы национальных кодировок должны быть побайтно закодированы в формате %ХХ, где ХХ — код из двух шестнадцатеричных цифр). Фактически же, большинство символов могут быть переданы в своем обычном виде (если речь идет о передаче через файл — в командной строке возможны сбои кодировки) — кодировать необходимо лишь % (%25) и & (%26), что упрощает нам задачу.
Данные, получаемые после отправки формы, нам, скорее всего, не понадобятся, и сохранять их нет необходимости. Однако, с опцией --spider метод post почему не работает. Вместо нее можно указать опцию -O nul — в таком варианте wget работает корректно, не замусоривая диск (в системе DOS/Windows имя nul используется для записи данных «в никуда» вместо файла).
аффтар жжот
Цитата: Python от августа 12, 2011, 05:11кодировать необходимо лишь % (%25) и & (%26), что упрощает нам задачу.
PHP хороший, там просто через urlencode() надо пропустить.
Цитата: Python от августа 10, 2011, 22:53
приступим к созданию флудобота
Чугуния уже изобрели. :(
Цитата: Drundia от августа 12, 2011, 09:31
Цитата: Python от августа 12, 2011, 05:11кодировать необходимо лишь % (%25) и & (%26), что упрощает нам задачу.
PHP хороший, там просто через urlencode() надо пропустить.
В нашем случае, можно и sedом обойтись (просто не хочу сильно раздувать набор инструментов):
sed -e s/%/%25/ -e s/&/%26/
Как-то так. В винде желательно ^ воткнуть перед % и &, чтобы она не приняла их за спецсимволы.
Виндосовский шелл жуткий.
Угу. Зате можна не морочитися з його установкою. Ну і синтаксис простіший, хоч і менш функціональний.
:)
Если мы загрузим страницу интересной для нас темы Лингвофорума (см. первые строки кармабота) и уберем все лишнее (т.е., возьмем лишь данные формы post2, с помощью которой ЛФ принимает ответы, вырежем весь скрипт и все строки, не содержащие аттрибута name):
sed -n /^<form.*post2/,/^<\/form/p <lf.html|sed /^<script/,/^<\/script/d|grep name
то останется у нас примерно следующее:
<form action="http://lingvoforum.net/index.php?action=post2" method="post" accept-charset="UTF-8" name="postmodify" id="postmodify" onsubmit="submitonce(this);" style="margin: 0;">
<input type="hidden" name="topic" value="36979" />
<input type="hidden" name="subject" value="95%" />
<input type="hidden" name="icon" value="xx" />
<input type="hidden" name="from_qr" value="1" />
<input type="hidden" name="notify" value="0" />
<input type="hidden" name="not_approved" value="" />
<input type="hidden" name="goback" value="1" />
<input type="hidden" name="num_replies" value="254" />
<textarea cols="75" rows="7" style="width: 95%; height: 200px;" name="message" tabindex="1" id="message" onchange="textchange(this)"></textarea><br />
<input type="submit" name="post" value="Post" onclick="deletecookie(); return submitThisOnce(this);" accesskey="s" tabindex="2" id="d_postsend" />
<input type="submit" name="preview" value="Preview" onclick="deletecookie(); return submitThisOnce(this);" accesskey="p" tabindex="4" id="d_postprev"/>
<input type="hidden" name="b929604f168" value="4a1bc1f643deb31286996cd26e456e83" />
<input type="hidden" name="seqnum" value="3242694" />
таки да рувэ нэ
Уэркинг эз интендед.
Мда, сообщения для уоннаби-бота закончились :(
Якщо бот буде в цій ситуації роздруковувати власний сорс-код, то зможе функціонувати як «албанський вірус».
Предлагаю ещё сообщения для бота:
вы бот!
:-\
забыли запятую
я согласна!
[img]http://www.kolobok.us/smiles/standart/swoon2.gif[/img]
Только надо, чтобы каптиализация первой буквы соответствовала стилю сообщений пользователя, который ставит себе бота.
:-\
Цитата: Python от августа 13, 2011, 03:11
Якщо бот буде в цій ситуації роздруковувати власний сорс-код, то зможе функціонувати як «албанський вірус».
Який такий албанський вірус?
Мне тоже непонятно, но я почему-то тогда смолчал. :+1:
Кстати, боту надо уметь ставить не только +1, но и :+1:!
Python, на вас надежда ЛФ!
:eat:
Мой бот все равно больше умеет. Будем вести войну ботов!
Цитата: Drundia от августа 13, 2011, 10:18
Цитата: Python от августа 13, 2011, 03:11
Якщо бот буде в цій ситуації роздруковувати власний сорс-код, то зможе функціонувати як «албанський вірус».
Який такий албанський вірус?
Вірус (наприклад, у вигляді інструкції для користувача), для роботи якого потрібна активна участь людини. Приблизно ось такий:
Цитировать
Я - албанський вірус, але у зв'язку із поганим розвитком технології у моїй країні, на жаль, не можу завдати шкоди вашому комп'ютеру. Будь ласка, знищіть один із важливих файлів на вашому комп'ютері самостійно та перешліть мене іншим.
Заздалегідь вдячний за розуміння та співпрацю.
Error! Gender mismatch in "я согласна!".
Цитата: RawonaM от августа 13, 2011, 11:38
Мой бот все равно больше умеет. Будем вести войну ботов!
(http://www.kolobok.us/smiles/standart/swoon2.gif)
Цитата: arseniiv от августа 13, 2011, 10:22
Мне тоже непонятно, но я почему-то тогда смолчал. :+1:
Кстати, боту надо уметь ставить не только +1, но и :+1:!
Python, на вас надежда ЛФ!
:+1:
Убедительная просьба: кто-нибудь (я не в счёт) забудьте запятую.
Цитата: Drundia от августа 13, 2011, 11:53
Error! Gender mismatch in "я согласна!".
Если вы ко мне, то подпись. Если вы к боту, то почему бот не может быть согласной? :what:
Цитата: Drundia от августа 13, 2011, 11:58
кто-нибудь (я не в счёт) забудьте
забыли запятую
Цитата: arseniiv от августа 13, 2011, 20:09Если вы ко мне, то подпись. Если вы к боту, то почему бот не может быть согласной? :what:
Бот должен сверять род в репликах с указанным в профиле полом.
Цитата: Drundia от августа 13, 2011, 21:56
Бот должен сверять род в репликах с указанным в профиле полом.
Да просто хозяин реплики подредактирует. Но я за указанный собой вариант, не взирающий на пол.
СЛАВА ВЕЛИКИМ РОБОТАМ!!!
lfpost.bat:
@echo off
set initpage=%*
set action=http://lingvoforum.net/index.php?action=post2
wget --load-cookies=cookies.txt --save-cookies=cookies.txt -O lf.html %initpage%
((sed -n "/<form.*post2/,/<\/form/p" lf.html|^^^
sed "/<script/,/<\/script/d"|grep name|grep input|^^^
sed -n "s/.*name=.\([^\"\"]*\).*value=.\([^\"\"]*\).*$/\1=\2/p"|grep -v "^preview"
echo message=|tr -d \n\r\040)|^^^
sed -e "s/%%/%%25/g" -e "s/\&/%%26/g"|tr \n "&"|tr -d \r
cat|sed -e "s/%%/%%25/g" -e "s/\&/%%26/g" -e "s/+/%%2B/g")|cat>pdata.txt
wget --load-cookies=cookies.txt --save-cookies=cookies.txt --post-file pdata.txt %action% -O lf.html
lfpost — скрипт для отправки сообщений на ЛФ. Работает как потоковый фильтр с одним параметром — адресом темы, в которую нужно запостить сообщение. Например, чтобы отправить в эту тему текст из файла FILENAME.TXT, нужно ввести команду:
lfpost http:^//lingvoforum.net/index.php/topic,37019.msg969829.html<FILENAME.TXT
Пример 2: отправка текста, генерируемого программой GENERATOR:
GENERATOR|lfpost http:^//lingvoforum.net/index.php/topic,37019.msg969829.html
Еще пример:
echo :+1:|lfpost http:^//lingvoforum.net/index.php/topic,37019.msg969829.html
Это еще не бот, а лишь обязательный элемент бота, к которому можно присоединить произвольный генератор сообщений.
:+1:
забыли запятую
Я начинаю вызывать у себя ассоциации с Эллочкой-людоедкой...
:+1:
Цитата: Drundia от августа 14, 2011, 04:42
Я начинаю вызывать у себя ассоциации с Эллочкой-людоедкой...
я согласна!
:-\
fortune.bat:@echo off
set cnt=0
for /F %%i in (%1) do set/a cnt=cnt + 1
set/a cnt=%random% %% %cnt% + 1
sed -n %cnt%p %1
floodbot1.bat:fortune messages.txt|lfpost http:^//lingvoforum.net/index.php/topic,35148.new.html
Запуск:schtasks /create /tn floodbot1 /tr D:\Python\bat\bot\floodbot1.bat /sc minute /mo 71 /st 04:05:06
Тест: Абыр (http://lingvoforum.net/index.php/topic,35148.new.html)
И шо там за возможные месседжи?
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Нам треба повний перелік, наш бот власної фантазії не має.
Простите тупость, где всё это исполнять или компилировать или как ещё приводить в действие?..
Цитата: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Питон Вы на каком пишете?
Цитата: Вадимий от августа 15, 2011, 16:22
Простите тупость, где всё это исполнять или компилировать или как ещё приводить в действие?..
Это пакетные файлы (т.е. сценарии для командной строки Windows/MS-DOS). Сохраняются в файлах с расширением .bat (отсюда сленговое название «батник»), запускаются двойным щелчком мыши, редактируются правой кнопкой мыши -> изменить (либо можно создать текстовый файл и поменять ему расширение). Однострочные команды можно либо тоже поместить в отдельные батники, либо в окне командной строки перейти в папку, где это все будет лежать, и непосредственно в нем ввести их и запустить.
Еще нужно установить пакет программ UnxUtils (http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download) (т.е., их нужно скачать, распаковать и указать путь к ним в переменной path). Например, если весь этот пакет распаковать на диск следующим образом:
C:\
unxutils\
usr\
local\
wbin\
agrep.exe
ansi2knr.exe
basename.exe
.....
sed.exe
.....
..... и т.д.,
то далее нужно сделать следующее:
меню пуск->настройка->панель управления->система->дополнительно->переменные среды
Выбираем в списке path, дабл-кликом открываем диалог для ее изменения, дописываем в конце:
;c:\unxutils\usr\local\wbin
Жмем ОК
Кроме того, нам нужен wget более новой версии, который я нашел в установочном пакете программы lein (https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip) (откуда его взяли там, мне так и не удалось узнать). Сам lein нам не нужен, а вот wget.exe из архива достаем и записываем вместо того, который лежит в unxutils. Скорее всего, менять уже ничего не нужно - wget 1.8 поддеррживает нужные опции, хотя раньше в unxutils лежал старый wget 1.5, не поддерживающий кукис. Вместе с lein лежит wget 1.11 — на всякий случай можно поставить его, но необязательно.
Еще нужно залогиниться на ЛФ в интернет эксплорере и экспортировать из него куки в файл cookies.txt ( Форумный бот: делимся идеями и опытом (http://lingvoforum.net/index.php/topic,37019.msg961888.html#msg961888)). Положить его в ту же папку, где будут лежать наши батники.
Цитата: spalis от августа 15, 2011, 17:09
Цитата: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Питон Вы на каком пишете?
Як хочу, так і пишу. Кому не наравиться — напишіть краще.
Цитата: Python от августа 15, 2011, 17:14
Цитата: spalis от августа 15, 2011, 17:09
Цитата: Python от августа 15, 2011, 16:01
Цитата: Drundia от августа 15, 2011, 15:45
И шо там за возможные месседжи?
Читайте мої повідомлення (зроблені ботом) в темі з тестом. Повідомлення можна задавати довільно файлом messages.txt: один рядок — одне повідомлення.
Питон Вы на каком пишете?
Як хочу, так і пишу. Кому не наравиться — напишіть краще.
Вы кацап?
а навошта лабуду пішыце?
Цитата: spalis от августа 15, 2011, 17:09Питон Вы на каком пишете?
Ми пишем на українсько-російськім суржику в разних пропорціях, просю звинить нас за це.
Цитата: Python от августа 15, 2011, 17:12
Кроме того, нам нужен wget более новой версии, который я нашел в установочном пакете программы lein (https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip) (откуда его взяли там, мне так и не удалось узнать). Сам lein нам не нужен, а вот wget.exe из архива достаем и записываем вместо того, который лежит в unxutils. Скорее всего, менять уже ничего не нужно - wget 1.8 поддеррживает нужные опции, хотя раньше в unxutils лежал старый wget 1.5, не поддерживающий кукис. Вместе с lein лежит wget 1.11 — на всякий случай можно поставить его, но необязательно.
Посмотрел внимательнее — все-таки нужно. Wget 1.8 не поддерживает метод post, без чего невозможно отправить сообщение на форум. Поэтому загружаем https://github.com/downloads/technomancy/leiningen/leiningen-1.5.2-win.zip и ставим wget из него вместо старого.
Спасибо! буду пытать ся.
Ся-то за чем?