Implement fortune commands set
+ !f, !ф, !fortune, !фортунка - show random phrase from fortune_mod db + !f 1, !ф 1, !fortune 1, !фортунка 1 - show fortune in chat at ~8 am + !f 0, !ф 0, !fortune 0, !фортунка 0 - do not show fortune in the morning + !f ?, !ф ?, !fortune ?, !фортунка ? - query morning fortune status
This commit is contained in:
30
bin/fortune_seed.pl
Normal file
30
bin/fortune_seed.pl
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use 5.018;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use utf8;
|
||||||
|
use open qw(:std :utf8);
|
||||||
|
use English qw( -no_match_vars );
|
||||||
|
use vars qw/$VERSION/;
|
||||||
|
$VERSION = '1.0';
|
||||||
|
|
||||||
|
my $workdir;
|
||||||
|
|
||||||
|
# before we run, change working dir
|
||||||
|
BEGIN {
|
||||||
|
use Cwd qw(chdir abs_path);
|
||||||
|
my @CWD = split /\//xms, abs_path ($PROGRAM_NAME);
|
||||||
|
if ($#CWD > 1) { $#CWD = $#CWD - 2; }
|
||||||
|
$workdir = join '/', @CWD;
|
||||||
|
chdir $workdir;
|
||||||
|
}
|
||||||
|
|
||||||
|
use lib ("$workdir/lib", "$workdir/vendor_perl", "$workdir/vendor_perl/lib/perl5");
|
||||||
|
use fortune qw(seed fortune);
|
||||||
|
use Carp;
|
||||||
|
$SIG{__DIE__} = sub { Carp::confess @_ };
|
||||||
|
|
||||||
|
seed ();
|
||||||
|
|
||||||
|
exit 0;
|
||||||
521
data/fortune_src/citates
Normal file
521
data/fortune_src/citates
Normal file
@@ -0,0 +1,521 @@
|
|||||||
|
Что сказал Берлиоз своей музыкой? - ничего; но как потрясающе он это
|
||||||
|
сказал.
|
||||||
|
-- Джеймс Гиббонз Хьюнекер
|
||||||
|
%
|
||||||
|
Музыка будет по-немецки, вы не поймете.
|
||||||
|
-- Оскар Уайльд
|
||||||
|
%
|
||||||
|
Четвертый раз смотрю этот фильм и должна вам сказать, что сегодня актеры
|
||||||
|
играли как никогда.
|
||||||
|
-- Фаина Раневская
|
||||||
|
%
|
||||||
|
Продолжительность фильма определяется выносливостью мочевого пузыря
|
||||||
|
обычного зрителя.
|
||||||
|
-- Альфред Хичкок
|
||||||
|
%
|
||||||
|
А что, если наша Земля - ад какой-нибудь другой планеты?
|
||||||
|
-- Олдос Хаксли
|
||||||
|
%
|
||||||
|
Если видишь женщину голой достаточно долго, опять начинаешь обращать
|
||||||
|
внимание на ее лицо.
|
||||||
|
-- Генри Миллер
|
||||||
|
%
|
||||||
|
Самое главное - выглядеть совершенно естественно; но для этого нужно очень
|
||||||
|
много косметики.
|
||||||
|
-- Кельвин Кляйн
|
||||||
|
%
|
||||||
|
Любовь - лучшая косметика. Но косметику купить легче.
|
||||||
|
-- Ив Сен-Лоран
|
||||||
|
%
|
||||||
|
Людей без лишнего веса больше всего на кладбище.
|
||||||
|
-- Биверли Силлз
|
||||||
|
%
|
||||||
|
Лучше быть молодым навозным жуков, чем старой райской птицей.
|
||||||
|
-- Марк Твен
|
||||||
|
%
|
||||||
|
К старости недостатки ума становятся все заметнее, как и недостатки
|
||||||
|
внешности.
|
||||||
|
-- Франсуа Ларошфуко
|
||||||
|
%
|
||||||
|
Лучше быть старой, чем мертвой.
|
||||||
|
-- Бриджит Бардо
|
||||||
|
%
|
||||||
|
Вечеринка с коктейлями: место, где можно встретить людей, которые пьют так
|
||||||
|
много, что вы не можете вспомнить их имена.
|
||||||
|
-- Космо Сардо
|
||||||
|
%
|
||||||
|
Средство от похмелья: выжать сок из двух бутылок виски...
|
||||||
|
-- Эдди Кондон
|
||||||
|
%
|
||||||
|
Дважды два уже четыре, а будет еще лучше.
|
||||||
|
-- Хенрик Ягодзинский
|
||||||
|
%
|
||||||
|
Я сидел на диете 14 дней и потерял всего две недели.
|
||||||
|
-- Тоти Филдс
|
||||||
|
%
|
||||||
|
В жизни можно полагаться только на себя самого. Да и то не советую!
|
||||||
|
-- Тристан Бернар
|
||||||
|
%
|
||||||
|
Источник нашей мудрости - наш опыт. Источник нашего опыта - наша глупость.
|
||||||
|
-- Саша Гитри
|
||||||
|
%
|
||||||
|
Уходя на тот свет, не забудь выключить этот.
|
||||||
|
-- Виктор Коваль
|
||||||
|
%
|
||||||
|
Я не верю ни единому слову из того, что вы говорите... или я вам.
|
||||||
|
-- Оскар Уайльд
|
||||||
|
%
|
||||||
|
Я думаю, мы должны говорить правду или хотя бы говорить то, что мы думаем.
|
||||||
|
-- Юрий Лужков
|
||||||
|
%
|
||||||
|
Нельзя иметь все. Куда вы это положите?
|
||||||
|
-- Стивен Райт
|
||||||
|
%
|
||||||
|
Сначала забываешь имена, потом забываешь лица, потом забываешь застегивать
|
||||||
|
ширинку, потом забываешь расстегивать ширинку.
|
||||||
|
-- Лео Розенберг
|
||||||
|
%
|
||||||
|
Время - лучший учитель, но, к сожалению, оно убивает своих учеников.
|
||||||
|
-- Гектор Берлиоз
|
||||||
|
%
|
||||||
|
Прошлое - чужая страна, там все по-другому.
|
||||||
|
-- Лесли Хартли
|
||||||
|
%
|
||||||
|
Помните о бедняках - это не требует никаких расходов.
|
||||||
|
-- Генри Уиллер Шоу
|
||||||
|
%
|
||||||
|
Я люблю своих детей, но некоторые мне не нравятся.
|
||||||
|
-- Лилиан Картер, мать президента США Д.Картера
|
||||||
|
%
|
||||||
|
Дружба - это когда можно ни с того ни с сего приехать к человеку
|
||||||
|
и поселиться у него.
|
||||||
|
-- Давид Самойлов
|
||||||
|
%
|
||||||
|
Врагов я забрасываю цветами - в гробу!
|
||||||
|
-- Сальвадор Дали
|
||||||
|
%
|
||||||
|
Я не боюсь умереть. Я просто не хочу при этом присутствовать.
|
||||||
|
-- Вуди Аллен
|
||||||
|
%
|
||||||
|
Какой замечательный некролог! С таким бы жить и жить!
|
||||||
|
-- М.Генин
|
||||||
|
%
|
||||||
|
Твои шансы выиграть в лотерею возрастут, если ты купишь билет.
|
||||||
|
-- Уинстон Грум из "Правил Фореста Гампа"
|
||||||
|
%
|
||||||
|
Пока вы ищете, кого бы стоило полюбить, вам нужен кто-то, кто любит вас.
|
||||||
|
-- Шейла Делейни
|
||||||
|
%
|
||||||
|
Если двое любят друг друга, это не может счастливо кончиться.
|
||||||
|
-- Э.Хемингуэй
|
||||||
|
%
|
||||||
|
Я порвала с ним через три года. Это была типичная любовь-ненависть. Мы оба
|
||||||
|
любили его и ненавидели меня.
|
||||||
|
-- Кэрол Зискинд
|
||||||
|
%
|
||||||
|
В тех кругах, в которых я вращаюсь, переспать с женщиной - недостаточный
|
||||||
|
повод для того, чтобы быть ей представленным.
|
||||||
|
-- Вирджиния Маклауд
|
||||||
|
%
|
||||||
|
Она говорила на восемнадцати языках и ни на одном из них не умела сказать
|
||||||
|
"нет".
|
||||||
|
-- Дороти Паркер
|
||||||
|
%
|
||||||
|
Помни: в пяти случаях из шести свет в конце туннеля - это свет
|
||||||
|
надвигающегося поезда.
|
||||||
|
-- Пол Диксон
|
||||||
|
%
|
||||||
|
Все соседи плохи, но верхние хуже нижних.
|
||||||
|
-- Константин Мелихан
|
||||||
|
%
|
||||||
|
Америка - единственный матриархат, под сенью которого женщины ведут борьбу
|
||||||
|
за равные права.
|
||||||
|
-- А. Рот
|
||||||
|
%
|
||||||
|
Брак - это лотерея, но в случае проигрыша вы не можете порвать свой билет.
|
||||||
|
-- Ф. Ноулз
|
||||||
|
%
|
||||||
|
Британский солдат устоит против кого угодно, только не против Британского
|
||||||
|
министерства обороны.
|
||||||
|
-- Бернард Шоу
|
||||||
|
%
|
||||||
|
Век наш таков, что он гордится машинами, умеющими думать, и побаивается
|
||||||
|
людей, которые пытаются проявить ту же способность.
|
||||||
|
-- Г.Мамфорд Джонс
|
||||||
|
%
|
||||||
|
Военная мудрость есть понятие, заключающее противоречие в самом себе.
|
||||||
|
Война - слишком серьезное дело, чтобы доверять его военным.
|
||||||
|
-- Талейран
|
||||||
|
%
|
||||||
|
Выход из беды найти не столь просто, как попасть в нее.
|
||||||
|
-- Эд Хау
|
||||||
|
%
|
||||||
|
Граница в политической географии - воображаемая линия между двумя
|
||||||
|
государствами, отделяющая воображаемые права одного от воображаемых прав
|
||||||
|
другого.
|
||||||
|
-- А.Бирс
|
||||||
|
%
|
||||||
|
Да не устрашит тебя величие: одни рождаются великими, другие достигают
|
||||||
|
величия, третьим его навязывают.
|
||||||
|
-- Уильям Шекспир
|
||||||
|
%
|
||||||
|
Две тысячи лет нам поставляли примеры для подражания, и теперь ничто нас
|
||||||
|
не извиняет, если мы, воюя, воем плохо.
|
||||||
|
-- Т.Э. Лоуренс
|
||||||
|
%
|
||||||
|
Дипломная работа среднего выпускника университета есть не что иное, как
|
||||||
|
кости, перенесенные из одной могилы в другую.
|
||||||
|
-- Дж. Фрэнк Доуби
|
||||||
|
%
|
||||||
|
Для любой волнующей человека проблемы всегда легко найти решение -
|
||||||
|
простое, достижимое и ошибочное.
|
||||||
|
-- Г.Л. Менкен
|
||||||
|
%
|
||||||
|
Добрым словом и револьвером вы можете добиться гораздо большего, чем одним
|
||||||
|
только добрым словом.
|
||||||
|
-- Аль Капоне
|
||||||
|
%
|
||||||
|
Если вы не восходящий, значит, вы ниспадающий.
|
||||||
|
-- Стивен Поттер
|
||||||
|
%
|
||||||
|
Если честолюбивая мечта не заставляет вас страдать, значит, ее у вас нет.
|
||||||
|
-- К. Норрис
|
||||||
|
%
|
||||||
|
Идеалист тот, кто, заметив, что роза пахнет лучше капусты, заключает, что
|
||||||
|
и суп из нее будет лучше.
|
||||||
|
-- Г. Менкен
|
||||||
|
%
|
||||||
|
Жизнь что луковица - вы чистите ее, снимая слой за слоем, и иногда
|
||||||
|
плачете.
|
||||||
|
-- С. Сандберг
|
||||||
|
%
|
||||||
|
Когда люди вольны поступать как угодно, они обычно подражают друг другу.
|
||||||
|
-- Э. Хоффер
|
||||||
|
%
|
||||||
|
Коли все думают одинаково, значит, никто особенно и не думает.
|
||||||
|
-- У.Липпман
|
||||||
|
%
|
||||||
|
Компьютеры бесподобны: за несколько минут они могут совершить такую
|
||||||
|
грандиозную ошибку, какую не в состоянии сделать множество людей за многие
|
||||||
|
месяцы.
|
||||||
|
-- М. Мичэм
|
||||||
|
%
|
||||||
|
Логика - это искусство ошибаться с уверенностью в своей правоте.
|
||||||
|
-- Дж. У. Крач
|
||||||
|
%
|
||||||
|
Любовь - вещь идеальная, супружество - реальная; смешение реального с
|
||||||
|
идеальным никогда не проходит безнаказанно.
|
||||||
|
-- И. Гете
|
||||||
|
%
|
||||||
|
Любое ваше решение - это ошибка.
|
||||||
|
-- Эдуард Далберг
|
||||||
|
%
|
||||||
|
Мой способ шутить - это говорить правду. На свете нет ничего
|
||||||
|
смешнее.
|
||||||
|
-- Бернард Шоу
|
||||||
|
%
|
||||||
|
На моем веку было очень много прогресса, но, боюсь, не в том направлении.
|
||||||
|
-- О. Нэш
|
||||||
|
%
|
||||||
|
Нам мало добиться успеха. Надо еще, чтобы друзья наши потерпели крах.
|
||||||
|
-- Ларошфуко
|
||||||
|
%
|
||||||
|
Невеста - женщина, у которой виды на счастье остались позади.
|
||||||
|
-- А. Бирс
|
||||||
|
%
|
||||||
|
Нужно учредить Нобелевскую премию за остроумие. Без физиков, химиков,
|
||||||
|
экономистов мы, если прижмет, как-нибудь обойдемся. Без мира обычно тоже
|
||||||
|
обходимся. Без остроумия - пропадем.
|
||||||
|
-- Джордж Ф. Уилл
|
||||||
|
%
|
||||||
|
О несчастном случае мой подзащитный впервые узнал лишь тогда, когда этот
|
||||||
|
случай произошел.
|
||||||
|
-- Из речи адвоката
|
||||||
|
%
|
||||||
|
Первый и наихудший из всех подвохов - обмануть самого себя. Потом уже
|
||||||
|
легко впасть в любой грех.
|
||||||
|
-- Дж. Бэйли
|
||||||
|
%
|
||||||
|
По самой своей природе человек, чем старше он становится, тем больше
|
||||||
|
противится переменам, особенно переменам к лучшему.
|
||||||
|
-- Дж. Стейнбек
|
||||||
|
%
|
||||||
|
Поиск истины способен изрядно позабавить.
|
||||||
|
-- Вернон Говард
|
||||||
|
%
|
||||||
|
Полицейский находится на своем месте не для того, чтобы создавать
|
||||||
|
беспорядок; полицейский находится там, чтобы поддерживать беспорядок.
|
||||||
|
-- Ричард Дж. Дейли, мэр Чикаго
|
||||||
|
%
|
||||||
|
Посредственность - добродетель в глазах посредственных людей.
|
||||||
|
-- Ж. Жобер
|
||||||
|
%
|
||||||
|
Посредственный учитель излагает. Хороший учитель объясняет. Выдающийся
|
||||||
|
учитель показывает. Великий учитель вдохновляет.
|
||||||
|
-- Уильям Артур Уорд
|
||||||
|
%
|
||||||
|
Президенту в его окружении не нужны мужчины и женщины, умеющие только
|
||||||
|
поддакивать. Если он говорит "нет", мы все говорим "нет".
|
||||||
|
-- Элизабет Доул, помощница президента Рейгана
|
||||||
|
%
|
||||||
|
"Радость моя, мы живем в переходную эпоху", говорил Адам Еве по дороге из
|
||||||
|
рая.
|
||||||
|
-- У. Инге
|
||||||
|
%
|
||||||
|
"С нами такого случиться не может" - это фраза номер один в списке
|
||||||
|
знаменитых последних слов.
|
||||||
|
-- Дэвид Кросби
|
||||||
|
%
|
||||||
|
Самая большая ложь - это неверно понятая правда.
|
||||||
|
-- Уильям Джеймс
|
||||||
|
%
|
||||||
|
Скрипка - инструмент для щекотания человеческих ушей при помощи трения
|
||||||
|
лошадиного хвоста о внутренности кошки.
|
||||||
|
-- Амброз Бирс
|
||||||
|
%
|
||||||
|
Среди преподавателей большинство составляют те, кто не прервет чтение
|
||||||
|
своих лекций по навигации, даже если корабль уже тонет. Следствие:
|
||||||
|
путешествие длиною в тысячу миль завершается одним-единственным шагом.
|
||||||
|
-- Джеймс Г. Борен
|
||||||
|
%
|
||||||
|
Творческое мышление, возможно, означает всего-навсего понимание, что нет
|
||||||
|
никакой особой добродетели в том, чтобы вести дела так, как их всегда вели до
|
||||||
|
нас.
|
||||||
|
-- Рудольф Флеш
|
||||||
|
%
|
||||||
|
Технический прогресс лишь снабдил нас действенными средствами для движения
|
||||||
|
назад.
|
||||||
|
-- О. Хаксли
|
||||||
|
%
|
||||||
|
То, что мы называем прогрессом, представляет собой замену одной
|
||||||
|
неприятности другою.
|
||||||
|
-- Г. Эллис
|
||||||
|
%
|
||||||
|
Учитель прикасается к вечности: никто не может сказать, где кончается его
|
||||||
|
влияние.
|
||||||
|
-- Генри Адамс
|
||||||
|
%
|
||||||
|
Человеку надлежит жить с самим собой и постоянно заботиться, чтобы это
|
||||||
|
была хорошая кампания.
|
||||||
|
-- С.И. Хьюз
|
||||||
|
%
|
||||||
|
Эксперт - это человек, знающий все больше и больше о все меньшем и
|
||||||
|
меньшем. Следствие: колледж не может обеспечить компетентность; он может
|
||||||
|
обеспечить диплом.
|
||||||
|
-- Николас Батлер
|
||||||
|
%
|
||||||
|
Эксперт - это человек, который больше уже не думает; он знает.
|
||||||
|
-- К. Хаббард
|
||||||
|
%
|
||||||
|
Я не верю в коллективную мудрость невежественных индивидуумов.
|
||||||
|
-- Т. Карлейль
|
||||||
|
%
|
||||||
|
Я не против полиции, я просто боюсь ее.
|
||||||
|
-- Альфред Хичкок
|
||||||
|
%
|
||||||
|
Я никогда не мог взять в толк, почему из-за того только, что я выражаюсь
|
||||||
|
невразумительно, никто меня не понимает.
|
||||||
|
-- Милтон Мейер
|
||||||
|
%
|
||||||
|
Пожилые люди думают, что с тех пор, как они постарели, мир только теряет,
|
||||||
|
но ничего не приобретает.
|
||||||
|
-- Жеремена Сталь
|
||||||
|
%
|
||||||
|
Меня интересует мнение не тех людей, которые разбираются в данном вопросе,
|
||||||
|
а тех, которые сами кое-что сделали в одной из областей знания.
|
||||||
|
-- Hорберт Винер
|
||||||
|
%
|
||||||
|
Случайные открытия совершают только подготовленные умы.
|
||||||
|
-- Паскаль
|
||||||
|
%
|
||||||
|
Бывают услуги настолько большие, что рассчитаться за них можно только
|
||||||
|
неблагодарностью.
|
||||||
|
-- Дюма-отец
|
||||||
|
%
|
||||||
|
"Тоже неплохо!" - сказал зять, бросив камнем в собаку, а попав в тещу.
|
||||||
|
-- Плутарх. "Пир семи мудрецов".
|
||||||
|
%
|
||||||
|
Не ковыряй в носу перочинным ножиком. Лезвие легко ржавеет.
|
||||||
|
-- Из книги "Пи"
|
||||||
|
%
|
||||||
|
Очень много - иногда вполне достаточно для женщины.
|
||||||
|
-- Из книги "Ву"
|
||||||
|
%
|
||||||
|
В жизни можно рассчитывать только на самих себя. И то не всегда.
|
||||||
|
-- Тристан Бернар
|
||||||
|
%
|
||||||
|
Все было бы очень хорошо, если бы все наши поступки можно было бы совершать
|
||||||
|
дважды.
|
||||||
|
-- Гете
|
||||||
|
%
|
||||||
|
E = mC
|
||||||
|
-- Альберт Эйнштейн
|
||||||
|
%
|
||||||
|
Человек бывает таким, каким его создал бог, но преимущественно немного хуже.
|
||||||
|
-- Сервантес
|
||||||
|
%
|
||||||
|
Две параллельных линии полюбили друг друга. Трагедия!
|
||||||
|
-- Из книги "Пи"
|
||||||
|
%
|
||||||
|
Я знаток всех "и т. д., и т. п." и я знаю, когда за ними ничего больше
|
||||||
|
не скрывается.
|
||||||
|
-- Гомес де ля Серна
|
||||||
|
%
|
||||||
|
Одна туча может погрузить в темноту весь парк, одно слово может затемнить
|
||||||
|
самое большое счастье.
|
||||||
|
-- Гомес де ля Серна
|
||||||
|
%
|
||||||
|
Тот факт, что будильник не прозвенел, изменило уже много человеческих судеб.
|
||||||
|
-- Агата Кристи
|
||||||
|
%
|
||||||
|
Заполнять жизнь - это еще не значит обогащать ее.
|
||||||
|
-- Из книги "Пи"
|
||||||
|
%
|
||||||
|
Самым серьезным достоинством современного искусства является то, что, когда
|
||||||
|
эти произведения смотрят дети, они не задают таких вопросов, на которые
|
||||||
|
обычно бывает трудно отвечать.
|
||||||
|
-- Лорд Галлюкс
|
||||||
|
%
|
||||||
|
Замужних женщин значительно больше, чем женатых мужчин.
|
||||||
|
-- По данным американской статистики
|
||||||
|
%
|
||||||
|
Совесть - это тот голос, который говорит тебе, что не надо делать именно то,
|
||||||
|
что ты только что сделал.
|
||||||
|
-- Из книги "Пи"
|
||||||
|
%
|
||||||
|
И мелкие неприятности могут отравить жизнь, если нет крупных.
|
||||||
|
-- Р. Гомес де ля Серна
|
||||||
|
%
|
||||||
|
Счастлив тот, кто ни о чем не думает.
|
||||||
|
-- Софокл
|
||||||
|
%
|
||||||
|
Я не читаю газет. Все, о чем там стоит знать, всегда кто-нибудь расскажет.
|
||||||
|
-- Лорд Галлюкс
|
||||||
|
%
|
||||||
|
Недостаточно встать рано, надо еще и проснуться.
|
||||||
|
-- Из книги "Ву"
|
||||||
|
%
|
||||||
|
Высохшую реку не благодарят за ее прошлое.
|
||||||
|
-- Рабиндранат Тагор
|
||||||
|
%
|
||||||
|
Давать советы всегда плохо, но хорошего совета тебе никто не простит.
|
||||||
|
-- Оскар Уайльд
|
||||||
|
%
|
||||||
|
Устарели не только ответы, но даже сами вопросы.
|
||||||
|
-- Хемингуэй
|
||||||
|
%
|
||||||
|
Друзья, как арбузы: случается, что из десяти ни одного хорошего не выбрать.
|
||||||
|
-- Из книги "Пи"
|
||||||
|
%
|
||||||
|
Пока слушатели во время лекции поглядывают на часы, все в порядке. Страшно,
|
||||||
|
когда они начинают удивленно подносить часы к уху.
|
||||||
|
-- Из книги "Пи"
|
||||||
|
%
|
||||||
|
Нет правила, которого нельзя было бы нарушить ради более прекрасного.
|
||||||
|
-- Л. Бетховен
|
||||||
|
%
|
||||||
|
Прекрасна молодость, когда она в движении и знает, куда приложить свои силы.
|
||||||
|
-- Менандр
|
||||||
|
%
|
||||||
|
Простим горячке юных лет
|
||||||
|
И юный жар, и юный бред.
|
||||||
|
-- А. С. Пушкин
|
||||||
|
%
|
||||||
|
Грустно думать, что напрасно
|
||||||
|
Была нам молодость дана.
|
||||||
|
-- А. С. Пушкин
|
||||||
|
%
|
||||||
|
Всего больнее знать, что счастье было так близко - и ты сам его отверг.
|
||||||
|
-- Софокл
|
||||||
|
%
|
||||||
|
Настоящий художник настолько владеет искусством, насколько оно владеет им.
|
||||||
|
-- Г. Флобер
|
||||||
|
%
|
||||||
|
Великие люди сами сооружают себе пьедестал; статую воздвигнет будущее.
|
||||||
|
-- В. Гюго
|
||||||
|
%
|
||||||
|
...заслуги отца на сына не распространяются.
|
||||||
|
-- М. Сервантес
|
||||||
|
%
|
||||||
|
Давайте жить так, чтобы даже гробовщику стало жалко, когда мы умрем.
|
||||||
|
-- Марк Твен
|
||||||
|
%
|
||||||
|
- Обладаешь ли ты разумом?
|
||||||
|
- Обладаю.
|
||||||
|
- Почему же ты не пользуешься им?
|
||||||
|
-- Марк Авелий
|
||||||
|
%
|
||||||
|
Нет такой глупости, которой нельзя было бы исправить при помощи ума,
|
||||||
|
и нет такой мудрости, которой нельзя было бы испортить при помощи глупости.
|
||||||
|
-- В. Гёте
|
||||||
|
%
|
||||||
|
Оптимист верит, что мы живем в лучшем из миров.
|
||||||
|
Пессимист боится, что так оно и есть.
|
||||||
|
%
|
||||||
|
Пессимист видит темный туннель.
|
||||||
|
Оптимист видит свет в конце туннеля.
|
||||||
|
Реалист видит, что это на них мчится поезд.
|
||||||
|
И только машинист видит трех мудаков, тупящих на рельсах.
|
||||||
|
%
|
||||||
|
Мы познаем человека не по тому, что он знает, а по тому, чему он радуется.
|
||||||
|
-- Р.Тагор
|
||||||
|
%
|
||||||
|
Если вы уверены в победе вашей национальной сборной на Евро 2004, то вы либо
|
||||||
|
дурак, либо немец.
|
||||||
|
-- М.Задорнов
|
||||||
|
%
|
||||||
|
Нет некрасивых женщин - есть только женщины, не знающие, что они красивы.
|
||||||
|
-- Вивьен Ли
|
||||||
|
%
|
||||||
|
Любая сложная технология неотличима от волшебства.
|
||||||
|
-- Артур Кларк
|
||||||
|
%
|
||||||
|
Я люблю тебя не за то, кто ты, а за то, кто я, когда я с тобой.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Ни один человек не заслуживает твоих слез, а те, кто заслуживают,
|
||||||
|
не заставят тебя плакать.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Только потому что кто-то не любит тебя так, как тебе хочется, не значит,
|
||||||
|
что он не любит тебя всей душой.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Настоящий друг – это тот, кто будет держать тебя за руку
|
||||||
|
и чувствовать твоё сердце.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Худший способ скучать по человеку – это быть с ним и понимать,
|
||||||
|
что он никогда не будет твоим.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Никогда не переставай улыбаться, даже когда тебе грустно: кто-то может влюбиться
|
||||||
|
в твою улыбку.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Возможно, в этом мире ты всего лишь человек, но для кого-то ты – весь мир.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Не трать время на человека, который не стремится провести его с тобой.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Возможно, Бог хочет, чтобы мы встречали не тех людей до того, как встретим того
|
||||||
|
единственного человека. Чтобы, когда это случится, мы были благодарны.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Не плачь, потому что это закончилось. Улыбнись, потому что это было.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Всегда найдутся люди, которые причинят тебе боль. Нужно продолжать верить людям,
|
||||||
|
просто быть чуть осторожнее.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Стань лучше и сам пойми, кто ты, прежде чем встретишь нового человека и будешь
|
||||||
|
надеяться, что он тебя поймет.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Не прилагай столько усилий, все самое лучшее случается неожиданно.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
|
%
|
||||||
|
Всё, что случаеется, имеет причину.
|
||||||
|
-- Габриэль Гарсиа
|
||||||
@@ -5,6 +5,10 @@
|
|||||||
"dir" : "data/friday",
|
"dir" : "data/friday",
|
||||||
"src" : "data/friday.txt"
|
"src" : "data/friday.txt"
|
||||||
},
|
},
|
||||||
|
"fortune" : {
|
||||||
|
"dir" : "data/fortune",
|
||||||
|
"srcdir" : "data/fortune_src"
|
||||||
|
},
|
||||||
"telegrambot" : {
|
"telegrambot" : {
|
||||||
"name" : "mybot",
|
"name" : "mybot",
|
||||||
"tname" : "@my_bot",
|
"tname" : "@my_bot",
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ use conf qw(loadConf);
|
|||||||
use lat qw(latAnswer);
|
use lat qw(latAnswer);
|
||||||
use karma qw(karmaSet karmaGet);
|
use karma qw(karmaSet karmaGet);
|
||||||
use friday qw(friday);
|
use friday qw(friday);
|
||||||
|
use fortune qw(fortune fortune_toggle fortune_status);
|
||||||
|
|
||||||
use vars qw/$VERSION/;
|
use vars qw/$VERSION/;
|
||||||
|
|
||||||
@@ -265,7 +266,7 @@ sub command {
|
|||||||
my $city = substr ($text, 3);
|
my $city = substr ($text, 3);
|
||||||
$reply = weather ($city);
|
$reply = weather ($city);
|
||||||
} elsif (substr ($text, 1) eq 'lat' || substr ($text, 1) eq 'лат') {
|
} elsif (substr ($text, 1) eq 'lat' || substr ($text, 1) eq 'лат') {
|
||||||
$reply = latAnswer();
|
$reply = latAnswer ();
|
||||||
} elsif (substr ($text, 1, 6) eq 'karma ' || substr ($text, 1, 6) eq 'карма ' || substr($text, 1) eq 'karma' || substr($text, $1) eq 'карма') {
|
} elsif (substr ($text, 1, 6) eq 'karma ' || substr ($text, 1, 6) eq 'карма ' || substr($text, 1) eq 'karma' || substr($text, $1) eq 'карма') {
|
||||||
my $mytext = '';
|
my $mytext = '';
|
||||||
|
|
||||||
@@ -279,7 +280,15 @@ sub command {
|
|||||||
|
|
||||||
$reply = karmaGet ($chatid, $mytext);
|
$reply = karmaGet ($chatid, $mytext);
|
||||||
} elsif (substr ($text, 1) eq 'friday' || substr ($text, 1) eq 'пятница') {
|
} elsif (substr ($text, 1) eq 'friday' || substr ($text, 1) eq 'пятница') {
|
||||||
$reply = friday();
|
$reply = friday ();
|
||||||
|
} elsif (substr ($text, 1) eq 'fortune' || substr ($text, 1) eq 'фортунка' || substr ($text, 1) eq 'f' || substr ($text, 1) eq 'ф') {
|
||||||
|
$reply = fortune ();
|
||||||
|
} elsif (substr ($text, 1) eq 'f 1' || substr ($text, 1) eq 'fortune 1' || substr ($text, 1) eq 'фортунка 1' || substr ($text, 1) eq 'ф 1') {
|
||||||
|
$reply = fortune_toggle ($chatid, 1);
|
||||||
|
} elsif (substr ($text, 1) eq 'f 0' || substr ($text, 1) eq 'fortune 0' || substr ($text, 1) eq 'фортунка 0' || substr ($text, 1) eq 'ф 0') {
|
||||||
|
$reply = fortune_toggle ($chatid, 0);
|
||||||
|
} elsif (substr ($text, 1) eq 'f ?' || substr ($text, 1) eq 'fortune ?' || substr ($text, 1) eq 'фортунка ?' || substr ($text, 1) eq 'ф ?') {
|
||||||
|
$reply = fortune_status ($chatid);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $reply;
|
return $reply;
|
||||||
|
|||||||
175
lib/fortune.pm
Normal file
175
lib/fortune.pm
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
package fortune;
|
||||||
|
# Any fortune_mod sources are suitable. Text file with "\n%\n" sentence delimeter.
|
||||||
|
|
||||||
|
use 5.018;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use utf8;
|
||||||
|
use open qw(:std :utf8);
|
||||||
|
use English qw( -no_match_vars );
|
||||||
|
use Carp qw(cluck croak);
|
||||||
|
|
||||||
|
use vars qw/$VERSION/;
|
||||||
|
use Exporter qw(import);
|
||||||
|
our @EXPORT_OK = qw(seed fortune fortune_toggle fortune_toggle_list fortune_status);
|
||||||
|
|
||||||
|
$VERSION = '1.0';
|
||||||
|
|
||||||
|
use SQLite_File;
|
||||||
|
use MIME::Base64;
|
||||||
|
use File::Path qw(mkpath);
|
||||||
|
use conf qw(loadConf);
|
||||||
|
|
||||||
|
my $c = loadConf();
|
||||||
|
my $dir = $c->{fortune}->{dir};
|
||||||
|
my $srcdir = $c->{fortune}->{srcdir};
|
||||||
|
|
||||||
|
sub seed () {
|
||||||
|
unless (-d $dir) {
|
||||||
|
mkpath ($dir) || croak "Unable to create $dir: $OS_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $backingfile = sprintf '%s/fortune.sqlite', $dir;
|
||||||
|
|
||||||
|
if (-f $backingfile) {
|
||||||
|
unlink $backingfile || croak "Unable to remove $backingfile: $OS_ERROR\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
tie my @fortune, 'SQLite_File', $backingfile || croak "Unable to tie to $backingfile: $OS_ERROR\n";
|
||||||
|
|
||||||
|
opendir (my $srcdirhandle, $srcdir) || croak "Unable to open $srcdir: $OS_ERROR";
|
||||||
|
|
||||||
|
while (my $fortunefile = readdir ($srcdirhandle)) {
|
||||||
|
my $srcfile = sprintf '%s/%s', $srcdir, $fortunefile;
|
||||||
|
next unless (-f $srcfile);
|
||||||
|
next if (m/[\.|\$|\@]/);
|
||||||
|
open (my $fh, '<', $srcfile) || croak "Unable to open $srcfile, $OS_ERROR\n";
|
||||||
|
# set correct phrase delimiter
|
||||||
|
local $INPUT_RECORD_SEPARATOR = "\n%\n";
|
||||||
|
|
||||||
|
while (readline $fh) {
|
||||||
|
my $phrase = substr($_, 0, -3);
|
||||||
|
push @fortune, $phrase;
|
||||||
|
}
|
||||||
|
|
||||||
|
close $fh; ## no critic (InputOutput::RequireCheckedSyscalls, InputOutput::RequireCheckedOpen)
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir $srcdirhandle;
|
||||||
|
untie @fortune;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
# just return answer
|
||||||
|
sub fortune () {
|
||||||
|
my $backingfile = sprintf '%s/fortune.sqlite', $dir;
|
||||||
|
|
||||||
|
tie my @array, 'SQLite_File', $backingfile || do {
|
||||||
|
cluck "Unable to tie to $backingfile: $OS_ERROR\n";
|
||||||
|
return '';
|
||||||
|
};
|
||||||
|
|
||||||
|
my $phrase = $array[int (rand ($#array - 1))];
|
||||||
|
# decode?
|
||||||
|
utf8::decode $phrase;
|
||||||
|
untie @array;
|
||||||
|
return $phrase;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fortune_toggle (@) {
|
||||||
|
my $chatid = shift;
|
||||||
|
my $action = shift // undef;
|
||||||
|
my $phrase = 'Фортунка с утра ';
|
||||||
|
|
||||||
|
unless (-d $dir) {
|
||||||
|
mkpath ($dir) || do {
|
||||||
|
cluck "Unable to create $dir: $OS_ERROR";
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
my $backingfile = sprintf '%s/chats.sqlite', $dir;
|
||||||
|
|
||||||
|
tie my %toggle, 'SQLite_File', $backingfile || do {
|
||||||
|
cluck "Unable to tie to $backingfile: $OS_ERROR\n";
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
my $state = $toggle{$chatid};
|
||||||
|
|
||||||
|
if (defined $action) {
|
||||||
|
if ($action) {
|
||||||
|
$toggle{$chatid} = 1;
|
||||||
|
$phrase .= 'будет показываться.';
|
||||||
|
} else {
|
||||||
|
if (defined $state) {
|
||||||
|
delete $toggle{$chatid};
|
||||||
|
}
|
||||||
|
|
||||||
|
$phrase .= 'не будет показываться.';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (defined $state && $state) {
|
||||||
|
delete $toggle{$chatid};
|
||||||
|
$phrase .= 'не будет показываться.';
|
||||||
|
} else {
|
||||||
|
$toggle{$chatid} = 1;
|
||||||
|
$phrase .= 'будет показываться.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
untie %toggle;
|
||||||
|
return $phrase;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fortune_status ($) {
|
||||||
|
my $chatid = shift;
|
||||||
|
my $phrase = 'Фортунка с утра ';
|
||||||
|
|
||||||
|
unless (-d $dir) {
|
||||||
|
mkpath ($dir) || do {
|
||||||
|
cluck "Unable to create $dir: $OS_ERROR";
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
my $backingfile = sprintf '%s/chats.sqlite', $dir;
|
||||||
|
|
||||||
|
tie my %toggle, 'SQLite_File', $backingfile || do {
|
||||||
|
cluck "Unable to tie to $backingfile: $OS_ERROR\n";
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
my $state = $toggle{$chatid};
|
||||||
|
|
||||||
|
if (defined $state && $state) {
|
||||||
|
$phrase .= 'показываtтся.';
|
||||||
|
} else {
|
||||||
|
$phrase .= 'yt показываtтся.';
|
||||||
|
}
|
||||||
|
|
||||||
|
untie %toggle;
|
||||||
|
return $phrase;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fortune_toggle_list () {
|
||||||
|
unless (-d $dir) {
|
||||||
|
mkpath ($dir) || croak "Unable to create $dir: $OS_ERROR";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $backingfile = sprintf '%s/chats.sqlite', $dir;
|
||||||
|
|
||||||
|
tie my %toggle, 'SQLite_File', $backingfile || do {
|
||||||
|
cluck "Unable to tie to $backingfile: $OS_ERROR\n";
|
||||||
|
my @empty = ();
|
||||||
|
return @empty;
|
||||||
|
};
|
||||||
|
|
||||||
|
my @list = keys %toggle;
|
||||||
|
untie %toggle;
|
||||||
|
return @list;
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
|
# vim: ft=perl noet ai ts=4 sw=4 sts=4:
|
||||||
@@ -16,6 +16,7 @@ use conf qw(loadConf);
|
|||||||
use botlib qw(weather logger trim randomCommonPhrase command);
|
use botlib qw(weather logger trim randomCommonPhrase command);
|
||||||
use telegramlib qw(visavi);
|
use telegramlib qw(visavi);
|
||||||
use karma qw(karmaSet);
|
use karma qw(karmaSet);
|
||||||
|
use fortune qw(fortune fortune_toggle_list);
|
||||||
|
|
||||||
use Exporter qw(import);
|
use Exporter qw(import);
|
||||||
our @EXPORT_OK = qw(run_telegrambot);
|
our @EXPORT_OK = qw(run_telegrambot);
|
||||||
@@ -34,10 +35,21 @@ my $can_talk = 0;
|
|||||||
|
|
||||||
has token => $c->{telegrambot}->{token};
|
has token => $c->{telegrambot}->{token};
|
||||||
|
|
||||||
# i promise, i'll make use of this sub
|
sub __cron {
|
||||||
sub __cron { ## no critic (Subroutines::ProhibitUnusedPrivateSubroutines)
|
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
# noop
|
|
||||||
|
# fortune mod
|
||||||
|
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (time);
|
||||||
|
|
||||||
|
if ($hour = 8 && ($min >= 0 && $min <= 14)) {
|
||||||
|
foreach my $enabledfortunechat (fortune_toggle_list()) {
|
||||||
|
my $send_args;
|
||||||
|
$send_args->{text} = sptintf "Сегодняшний день пройдёт под эгидой фразы:\n%s", fortune();
|
||||||
|
$send_args->{chat_id} = $enabledfortunechat;
|
||||||
|
Teapot::Bot::Brain::sendMessage ($self, $send_args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -225,6 +237,12 @@ sub __on_msg {
|
|||||||
$send_args->{text} = << 'MYHELP';
|
$send_args->{text} = << 'MYHELP';
|
||||||
```
|
```
|
||||||
!help | !помощь - список команд
|
!help | !помощь - список команд
|
||||||
|
!f | !ф - рандомная фраза из сборника цитат fortune_mod
|
||||||
|
!fortune | !фортунка - рандомная фраза из сборника цитат fortune_mod
|
||||||
|
!f # | !ф # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||||
|
!fortune # | !фортунка # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||||
|
!f ? | !ф ? - показываем ли с утра фортунку для чата
|
||||||
|
!fortune ? | !фортунка ? - показываем ли с утра фортунку для чата
|
||||||
!friday | пятница - а не пятница ли сегодня?
|
!friday | пятница - а не пятница ли сегодня?
|
||||||
!lat | !лат - сгенерировать фразу из крылатых латинских выражений
|
!lat | !лат - сгенерировать фразу из крылатых латинских выражений
|
||||||
!ping | !пинг - попинговать бота
|
!ping | !пинг - попинговать бота
|
||||||
@@ -352,6 +370,12 @@ MYHELP
|
|||||||
$send_args->{text} = << 'MYHELP';
|
$send_args->{text} = << 'MYHELP';
|
||||||
```
|
```
|
||||||
!help | !помощь - список команд
|
!help | !помощь - список команд
|
||||||
|
!f | !ф - рандомная фраза из сборника цитат fortune_mod
|
||||||
|
!fortune | !фортунка - рандомная фраза из сборника цитат fortune_mod
|
||||||
|
!f # | !ф # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||||
|
!fortune # | !фортунка # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||||
|
!f ? | !ф ? - показываем ли с утра фортунку для чата
|
||||||
|
!fortune ? | !фортунка ? - показываем ли с утра фортунку для чата
|
||||||
!friday | пятница - а не пятница ли сегодня?
|
!friday | пятница - а не пятница ли сегодня?
|
||||||
!lat | !лат - сгенерировать фразу из крылатых латинских выражений
|
!lat | !лат - сгенерировать фразу из крылатых латинских выражений
|
||||||
!ping | !пинг - попинговать бота
|
!ping | !пинг - попинговать бота
|
||||||
@@ -452,7 +476,7 @@ sub init {
|
|||||||
|
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->add_listener (\&__on_msg);
|
$self->add_listener (\&__on_msg);
|
||||||
# $self->add_repeating_task(900, \&__cron);
|
$self->add_repeating_task(900, \&__cron);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user