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",
|
||||
"src" : "data/friday.txt"
|
||||
},
|
||||
"fortune" : {
|
||||
"dir" : "data/fortune",
|
||||
"srcdir" : "data/fortune_src"
|
||||
},
|
||||
"telegrambot" : {
|
||||
"name" : "mybot",
|
||||
"tname" : "@my_bot",
|
||||
|
||||
@@ -18,6 +18,7 @@ use conf qw(loadConf);
|
||||
use lat qw(latAnswer);
|
||||
use karma qw(karmaSet karmaGet);
|
||||
use friday qw(friday);
|
||||
use fortune qw(fortune fortune_toggle fortune_status);
|
||||
|
||||
use vars qw/$VERSION/;
|
||||
|
||||
@@ -280,6 +281,14 @@ sub command {
|
||||
$reply = karmaGet ($chatid, $mytext);
|
||||
} elsif (substr ($text, 1) eq 'friday' || substr ($text, 1) eq 'пятница') {
|
||||
$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;
|
||||
|
||||
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 telegramlib qw(visavi);
|
||||
use karma qw(karmaSet);
|
||||
use fortune qw(fortune fortune_toggle_list);
|
||||
|
||||
use Exporter qw(import);
|
||||
our @EXPORT_OK = qw(run_telegrambot);
|
||||
@@ -34,10 +35,21 @@ my $can_talk = 0;
|
||||
|
||||
has token => $c->{telegrambot}->{token};
|
||||
|
||||
# i promise, i'll make use of this sub
|
||||
sub __cron { ## no critic (Subroutines::ProhibitUnusedPrivateSubroutines)
|
||||
sub __cron {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -225,6 +237,12 @@ sub __on_msg {
|
||||
$send_args->{text} = << 'MYHELP';
|
||||
```
|
||||
!help | !помощь - список команд
|
||||
!f | !ф - рандомная фраза из сборника цитат fortune_mod
|
||||
!fortune | !фортунка - рандомная фраза из сборника цитат fortune_mod
|
||||
!f # | !ф # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||
!fortune # | !фортунка # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||
!f ? | !ф ? - показываем ли с утра фортунку для чата
|
||||
!fortune ? | !фортунка ? - показываем ли с утра фортунку для чата
|
||||
!friday | пятница - а не пятница ли сегодня?
|
||||
!lat | !лат - сгенерировать фразу из крылатых латинских выражений
|
||||
!ping | !пинг - попинговать бота
|
||||
@@ -352,6 +370,12 @@ MYHELP
|
||||
$send_args->{text} = << 'MYHELP';
|
||||
```
|
||||
!help | !помощь - список команд
|
||||
!f | !ф - рандомная фраза из сборника цитат fortune_mod
|
||||
!fortune | !фортунка - рандомная фраза из сборника цитат fortune_mod
|
||||
!f # | !ф # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||
!fortune # | !фортунка # - где 1 - вкл, 0 - выкл фортунку с утра
|
||||
!f ? | !ф ? - показываем ли с утра фортунку для чата
|
||||
!fortune ? | !фортунка ? - показываем ли с утра фортунку для чата
|
||||
!friday | пятница - а не пятница ли сегодня?
|
||||
!lat | !лат - сгенерировать фразу из крылатых латинских выражений
|
||||
!ping | !пинг - попинговать бота
|
||||
@@ -452,7 +476,7 @@ sub init {
|
||||
|
||||
my $self = shift;
|
||||
$self->add_listener (\&__on_msg);
|
||||
# $self->add_repeating_task(900, \&__cron);
|
||||
$self->add_repeating_task(900, \&__cron);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user