Compare commits
No commits in common. "master" and "add_server" have entirely different histories.
master
...
add_server
24
.drone.yml
24
.drone.yml
|
@ -12,15 +12,15 @@ steps:
|
||||||
image: appleboy/drone-scp
|
image: appleboy/drone-scp
|
||||||
settings:
|
settings:
|
||||||
host:
|
host:
|
||||||
from_secret: server_ip
|
from_secret: ssh_ip
|
||||||
username:
|
username:
|
||||||
from_secret: ssh_user
|
from_secret: ssh_login
|
||||||
key:
|
password:
|
||||||
from_secret: ssh_key
|
from_secret: ssh_pass
|
||||||
port:
|
port:
|
||||||
from_secret: ssh_port
|
from_secret: ssh_port
|
||||||
target:
|
target:
|
||||||
- deploys/verochka_tg_bot
|
- bots/verochka_tg_bot
|
||||||
source:
|
source:
|
||||||
- verochka_tg_bot
|
- verochka_tg_bot
|
||||||
- config
|
- config
|
||||||
|
@ -39,21 +39,21 @@ steps:
|
||||||
from_secret: ssh_pass
|
from_secret: ssh_pass
|
||||||
settings:
|
settings:
|
||||||
host:
|
host:
|
||||||
from_secret: server_ip
|
from_secret: ssh_ip
|
||||||
username:
|
username:
|
||||||
from_secret: ssh_user
|
from_secret: ssh_login
|
||||||
key:
|
password:
|
||||||
from_secret: ssh_key
|
from_secret: ssh_pass
|
||||||
port:
|
port:
|
||||||
from_secret: ssh_port
|
from_secret: ssh_port
|
||||||
envs: [ TOKEN,TOKEN_WEATHER,CHAT_ID,PASSWORD ]
|
envs: [ TOKEN,TOKEN_WEATHER,CHAT_ID,PASSWORD ]
|
||||||
command_timeout: 10s
|
command_timeout: 10s
|
||||||
script:
|
script:
|
||||||
- cd deploys/verochka_tg_bot
|
- cd bots/verochka_tg_bot
|
||||||
- echo $${TOKEN} > token.txt
|
- echo $${TOKEN} > token.txt
|
||||||
- echo $${TOKEN_WEATHER} > token_weather.txt
|
- echo $${TOKEN_WEATHER} > token_weather.txt
|
||||||
- echo $${CHAT_ID} > chat_id.txt
|
- echo $${CHAT_ID} > token_weather.txt
|
||||||
- echo $${PASSWORD} | sudo -S systemctl restart verochka
|
- echo $${PASSWORD} | sudo -S systemctl restart verochka_tg_bot
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
event:
|
event:
|
||||||
|
|
11
README.md
11
README.md
|
@ -3,6 +3,13 @@
|
||||||
|
|
||||||
## develop
|
## develop
|
||||||
|
|
||||||
git clone https://git.3crabs.ru/VLADIMIR/verochka verochka
|
git clone https://github.com/3crabs/student-verochka-bot student_bot
|
||||||
cd verochka
|
cd student_bot
|
||||||
go run main.go --token=<TELEGRAM_API_TOKEN> --key=<YANDEX_WEATHER_API_KEY>
|
go run main.go --token=<TELEGRAM_API_TOKEN> --key=<YANDEX_WEATHER_API_KEY>
|
||||||
|
|
||||||
|
## deploy
|
||||||
|
|
||||||
|
git clone https://github.com/3crabs/student-verochka-bot student_bot
|
||||||
|
cd student_bot
|
||||||
|
go build -v -o bin/bot
|
||||||
|
./bin/bot --token=<TELEGRAM_API_TOKEN> --key=<YANDEX_WEATHER_API_KEY> &
|
||||||
|
|
|
@ -4,7 +4,6 @@ type Command string
|
||||||
|
|
||||||
//today_lessons - пары сегодня
|
//today_lessons - пары сегодня
|
||||||
//tomorrow_lessons - пары завтра
|
//tomorrow_lessons - пары завтра
|
||||||
//all_lessons - пары на несколько дней
|
|
||||||
//weather - погода у универа
|
//weather - погода у универа
|
||||||
//new_year - дней до нового года
|
//new_year - дней до нового года
|
||||||
//ping - проверка связи
|
//ping - проверка связи
|
||||||
|
@ -15,7 +14,6 @@ const (
|
||||||
Ping = Command("/ping")
|
Ping = Command("/ping")
|
||||||
TodayLessons = Command("/today_lessons")
|
TodayLessons = Command("/today_lessons")
|
||||||
TomorrowLessons = Command("/tomorrow_lessons")
|
TomorrowLessons = Command("/tomorrow_lessons")
|
||||||
AllLessons = Command("/all_lessons")
|
|
||||||
Weather = Command("/weather")
|
Weather = Command("/weather")
|
||||||
NewYear = Command("/new_year")
|
NewYear = Command("/new_year")
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,84 +38,84 @@
|
||||||
],
|
],
|
||||||
"messages": [
|
"messages": [
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Мокрый Новый год в Таиланде",
|
||||||
"text": "Пусть новогодние огни\nПоднимут настроение.\nПусть в дом уверенно войдут\nДостаток и везение!\n\nЗдоровья крепкого семье\nИ всяческих свершений.\nИ в ночь волшебную достичь\nЖеланий исполнения!\n\nЛюбви, добра и красоты,\nУспехов и подарков!\nИ пусть счастливым будет год —\nБогатым, добрым, ярким!"
|
"text": "Тайцы очень любят праздники и не отказываются от лишнего повода повеселиться. Возможно, поэтому они отмечают Новый год трижды: европейский новый год, китайский и свой собственный праздник смены года — Сонгкран. Сонгкран празднуется в апреле несколько дней подряд. В это время тайцы выходят на улицы, чтобы пожелать друг другу счастья и... облить водой с головы до ног. Считается, что чем быстрее и сильнее ты промокнешь, тем больше счастья придет в новом году."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Рождественское полено в странах Европы",
|
||||||
"text": "С Новым годом поздравляю!\nИ желаю волшебства,\nЧтобы жизнь веселой сказкой\nНепременно ожила!\n\nЧтобы радости мгновений\nБыло больше с каждым днем,\nИ удача без сомнений\nПоселилась прямо в дом!\n\nПусть гремят кругом салюты,\nНовый год уж наступил,\nПробежавшие минуты\nПусть добавят в жизни сил!"
|
"text": "Во многих европейских странах существовал обычай в рождественский сочельник зажигать в очаге полено. По традиции, полено должно было тлеть в камине на протяжении нескольких дней. В течение этого времени дерево поливали вином и медом, посыпали зерном и клали на него кусочки еды, чтобы год был плодородным и счастливым. Пепел от полена хранили весь год, добавляя его в еду и напитки от всех болезней. С течением времени эта трудоемкая традиция ушла в прошлое, но в память о ней в некоторых европейских странах едят рождественский торт под названием «Полено»."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "В Новый год с новым именем в Микронезии",
|
||||||
"text": "С Новым годом поздравляю!\nИ желаю перемен,\nЧтобы не было печалей,\nЧтобы не было проблем!\n\nЧтобы жили − не тужили,\nИ мечтать всегда могли,\nСвой доход приумножали,\nСвое счастье берегли!\n\nЧтобы радостных мгновений\nБыло больше с каждым днем,\nЧтобы праздничным салютом\nОсвещен был Новый год!"
|
"text": "На некоторых островах Микронезии каждый год люди берут себе новое имя. 1 января они нашептывают свое новое имя родственникам и друзьям, при этом бьют в барабан или шумят, чтобы их не подслушали злые духи. Из-за этой традиции часто происходят казусы: однажды половина жителей одного из островов весь год носила имя Майкл Джексон."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Мусорный дождь в новогоднюю ночь в Италии",
|
||||||
"text": "Вот растаял старый год,\nКак снежинка на ладошке.\nНовый год спешит рассыпать\nСчастье в каждое окошко.\n\nПусть он радость принесет\nОптимизма и веселья!\nБудто жемчуг соберет\nВсе желанья в ожерелье.\n\nИ исполнит всё-всё-всё,\nЧто задумывалось вами.\nЖизнь наполнит добротой,\nВолшебством и чудесами!"
|
"text": "В Италии считают, что, вступая в новый год, нужно непременно избавиться от всего старого и ненужного. В канун Нового года темпераментные итальянцы выбрасывают старые вещи прямо из окон своих домов. В былые времена на улицы летела даже сломанная мебель. Сейчас же можно попасть под «обстрел» старыми бумагами и мелким мусором."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "С чемоданом вокруг дома в Эквадоре",
|
||||||
"text": "Пусть этот славный Новый год\nПодарит счастье и удачу,\nЗдоровья много принесет\nИ денег океан в придачу!\n\nПусть все исполнятся мечты,\nУлыбка пусть сияет ярко!\nЖелаю мира, доброты\nИ замечательных подарков!"
|
"text": "Чтобы год был наполнен множеством путешествий, эквадорцы рекомендуют совершить первое из них прямо в новогоднюю ночь. Для этого нужно обежать вокруг дома с чемоданом в руках, пока часы бьют двенадцать раз."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Виноградины успеха в Испании",
|
||||||
"text": "Какая сказка за окном!\nКружат снежинки, будто в вальсе,\nВесь мир пропитан волшебством,\nИ воздух переполнен счастьем.\n\nПусть в этот чудный Новый год\nУдача в двери постучится,\nИ счастье вместе с ней войдет,\nИ все, что хочешь ты, случится!"
|
"text": "В винных столицах мира ни одно торжество не обходится без винограда. В Испании для всех участников новогоднего застолья заранее подготавливают по двенадцать виноградин (число ударов новогоднего колокола). Испанцы верят, что если все ягоды будут съедены за двенадцать ударов, год обязательно будет успешным."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Гном и битье посуды в Швеции",
|
||||||
"text": "Желаю в новом вам году\nПоймать удачу на ходу.\nВсех удивлять, все успевать,\nСмеяться и не унывать.\n\nЛюбить, надеяться и верить\nИ счастье на себя примерить,\nИ никогда вам не тужить,\nИ просто интересно жить!"
|
"text": "В Швеции, в отличие от большинства европейских стран, подарки детям приносит не высокий бородатый старик, а гном Юль Томтен. А помогают ему разные зверюшки, тролли, феи, принц с принцессой и даже Снежная Королева. Шведы очень любят разные гадания. В новогоднюю ночь они разбивают тарелки о двери соседей. Чем мельче осколки, тем больше счастья придет в новом году."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Во Вьетнаме Новый год встречают со стариками",
|
||||||
"text": "Счастье, радость и веселье\nПусть подарит Новый год!\nИ удачи пусть под елку\nВам побольше принесет.\n\nПусть положит под подушку\nПуд тепла и доброты,\nА в ладошке тихо спрячет\nИсполнение мечты.\n\nИз любви и вдохновенья\nПусть сплетет простой венок\nИ завяжет тихо-тихо\nВам на счастье узелок."
|
"text": "Вьетнамцы считают, что если за новогодним столом сидит человек старше семидесяти лет, его мудрость распространится на всех присутствующих. И чем старше гость, тем больше почета ему оказывают."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Ожившие сказки Англии и поцелуи под омелой",
|
||||||
"text": "Пусть этот праздник принесет\nВсё то, что в жизни много значит!\nЖелаю в светлый Новый год\nДобра, здоровья и удачи!\n\nПускай веселый смех звучит,\nА сердце — счастье заполняет,\nВедь дед Мороз осуществит\nВсё, что душа твоя желает!"
|
"text": "Новый год в Англии отмечается традиционным карнавальным шествием, которое возглавляет Лорд Беспорядок. В толпе сказочных героев можно увидеть Мартовского зайца, Шалтая-Болтая и прочих любимцев детей. Дома и улицы Англии украшаются венками из омелы, которая, по поверьям, обладает магической силой. Во время звона новогоднего колокола влюбленные целуются под таким венком, чтобы жить в согласии."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "В Голландии идут в гости со спичками",
|
||||||
"text": "Пожелаю в Новый год,\nЧтобы шел год без хлопот,\nПодарил Вам много счастья\nИ укрыл от всех ненастий.\n\nПусть случится волшебство,\nДарит радость торжество.\nПусть все сбудутся мечты.\nСчастья, мира, доброты!"
|
"text": "Голландцы идут на новогодний ужин, захватив с собой спичку. Спичка впоследствии сжигается в камине. Если она сгорает полностью, год будет очень счастливым."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Бочка дегтя в Шотландии",
|
||||||
"text": "С Новым годом поздравляю\nИ от всей души желаю\nВеселиться и смеяться,\nНи на что не обижаться,\nЖить легко и без забот\nВесь грядущий новый год.\n\nНаслаждаться каждым мигом\nИ дарить свое тепло,\nБыть всегда на позитиве,\nЧтоб всегда во всём везло!\n\nС Новым годом! С новым счастьем!\nСмеха, мира и добра!\nПусть обходят все ненастья,\nЖизнь одарит вас сполна!"
|
"text": "В некоторых городах Шотландии в новогоднюю ночь поджигают бочки с дегтем и катят их по улицам города. Так сжигают старый год и очищают дорогу новому. Если вам предстоит новогодний ужин у шотландца, не забудьте захватить с собой уголек, чтобы бросить его в очаг хозяина. Таким образом в Шотландии желают удачи в новом году."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Японцы загребают счастье граблями",
|
||||||
"text": "С Новым годом, с Новым годом!\nПусть здоровье входит в дом,\nПусть Мороз рукою легкой\nРазбросает счастье в нем!\n\nБудет пусть он полон смеха,\nИ любви, и доброты,\nЧтоб заботы — не помеха,\nДостатка, мира, красоты!"
|
"text": "В Японии к Новому году принято украшать дома бамбуковыми граблями. Считается, что если в доме нет граблей, то нечем будет загребать счастье. В первые секунды нового года японцы громко смеются, чтобы год был веселым и радостным."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Во Франции у кого боб, тот и король",
|
||||||
"text": "С Новым годом! С Новым счастьем!\nПусть исполнятся мечты,\nВ миг чудесный, в миг прекрасный,\nВ новогодний дивный миг!\n\nЧтобы было чудо в доме,\nРадость, счастье, волшебство,\nПозитив, тепло, веселье,\nИ здоровье, и добро!\n\nПусть умножатся доходы,\nКлассных, выгодных идей,\nЧтобы были только лучше,\nЧтобы жили веселей!"
|
"text": "В католической Франции зимние праздники заканчиваются 6 января на Богоявление. Этот праздник посвящен библейскому сюжету о трех волхвах, которые принесли дары младенцу Христу. В современной Франции в этот день едят знаменитый слоеный пирог с начинкой из миндаля — Пирог Волхвов. Пирог разрезается на части, один из гостей забирается под стол и оттуда выкрикивает, кому какой кусок следует отдать. В прежние времена в пироге запекался боб, и человек, которому он попадался, становился королем вечера. Сейчас в пирог кладут керамическую фигурку и корону из картона."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "В Бразилии «море пламенем горит»",
|
||||||
"text": "Пусть в Новом году всё плохое сотрется,\nКак ластик стирает ненужный нам штрих!\nПусть самое лучшее вам улыбнется,\nИ ярким пусть будет в году каждый миг!\n\nЗдоровья, успехов и много везенья,\nДостатка и благ в наступившем году!\nОтличных идей и всегда вдохновенья!\nВсего лишь хорошего в вашу судьбу!"
|
"text": "В жаркой Бразилии в новогоднюю ночь океан сверкает огнями. По традиции, люди загадывают желания и пускают по воде плоты со свечами и дарами богине моря. В прибрежные волны бросают лепестки белых цветов в надежде, что океан примет желания и не выбросит лепестки на берег. Приход Нового года сопровождает выстрел из пушки, после которого бразильцы обнимают всех вокруг, чтобы год был полон любви."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "В Венгрии освистывают злых духов",
|
||||||
"text": "Пусть год уходящий с собой заберет\nПроблемы, недуги, ненастье,\nА новый − здоровье и радость несет,\nЛюбовь доброту и участье!\n\nЧудес новогодних, добра, волшебства,\nУюта, семейного счастья,\nУлыбок, веселья, достатка, тепла,\nНе знать ни забот, ни напастей."
|
"text": "Венгры уверены в том, что злые духи очень боятся звука свистков и дудочек. Чтобы наступающий год был счастливым, перед его приходом обязательно нужно очистить города от духов-вредителей. И в новогоднюю ночь Венгрия наполняется громкими трелями и свистом."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Чтобы год был сладким, в Израиле едят сладости",
|
||||||
"text": "Желаю в этот Новый год\nПоменьше грусти и забот,\nПобольше счастья и добра,\nУлыбок, нежности, тепла!\n\nЧтоб были верными друзья\nИ очень дружною семья,\nЧтоб каждый день удачным был,\nИ чтоб на всё хватало сил!\n\nНу а ещё пусть Новый год\nПобольше денег принесёт,\nЗдоровья, мира и любви,\nЧтоб в сердце не было зимы!"
|
"text": "В Израиле отмечают Новый год в сентябре. Во время праздника едят сладкую пищу. Даже рыбу поливают медом. От горькой еды стараются отказаться, чтобы не привлечь «горькую» жизнь в новом году."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Кубинцы смывают грехи в новогоднюю ночь",
|
||||||
"text": "С Новым годом поздравляю\nИ от всей души желаю,\nЧтоб сбывались все мечты,\nВ праздник зимней красоты!\n\nЧтобы счастье приходило,\nВам везение дарило,\nА еще успех и радость,\nЧудеса, удачи сладость!"
|
"text": "В день перед Новым годом на Кубе наливают воду в кружки, тазы и кастрюли. Каждый набирает столько воды, сколько, по его мнению, грехов он совершил за год. После полуночи вода выливается за порог, что символизирует очищение от пороков."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Пауза для поцелуев в Болгарии и кизиловые палочки",
|
||||||
"text": "С Новым годом! С новым счастьем!\nНикогда не знать ненастья,\nВерить в чудо и добро,\nЧтоб плохое всё ушло!\n\nЖить и жизнью наслаждаться,\nНикогда не огорчаться,\nБыть любимыми, любить\nИ тепло души дарить.\n\nДобрых лишь людей встречать,\nО заботах не ворчать,\nВерных, преданных друзей,\nСамых лучших, светлых дней!"
|
"text": "Во время празднования Нового года в Болгарии во всех домах на три минуты выключают свет. В это время можно поцеловаться с тем, с кем не решался сделать это при свете. А 1 января болгарские дети идут поздравлять взрослых с кизиловыми палочками в руках. Дети стучат палочками друг о друга, после чего получают подарки."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Санта Клаус — серфингист в Австралии",
|
||||||
"text": "Новый Год — прекрасный праздник,\nПусть в нем крупно повезет,\nНастроенье будет ясным,\nА удача — круглый год!\n\nВ чудеса поверить нужно,\nИ они придут к тебе\nИ помогут вместе, дружно\nК небесам взлететь мечте.\n\nВаша жизнь пусть станет сказкой,\nБудет в ней всегда добро,\nЖизнь наполнит счастьем, лаской,\nПусть все будет хорошо!"
|
"text": "Новый год отмечается в Австралии летом. Жара вынуждает Санту избавиться от теплой шубы, и из всего праздничного костюма на нем часто остаются лишь красные плавки, борода и колпак. Оленям жары тоже не вынести, и на санях без снега не проехать, поэтому Санта Клаус доставляет подарки на серфе. Толпа встречает его на пляже радостными криками и фейерверками."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "",
|
"header": "Камень за пазухой в Греции",
|
||||||
"text": "Вот приходит Новый год\nИ с собой он пусть несет\nМного счастья, много смеха,\nВ жизни и в делах — успеха.\n\nЯрких, творческих идей,\nСамых преданных друзей.\nИ любви − огромной, чистой,\nИ улыбок − лишь лучистых!"
|
"text": "Если вы идете на новогодний ужин в Греции, по дороге обязательно подберите камень побольше. Крупные камни греки кладут у порога хозяина дома с пожеланиями такого же большого богатства. Если же больших камней не нашлось, можно взять самый маленький и пожелать, чтобы возможные беды хозяев были не тяжелее этого камешка."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
3
cron.txt
3
cron.txt
|
@ -1,3 +0,0 @@
|
||||||
0 3 * * 1-5 curl http://127.0.0.1:10001/send_today_lessons_to_chat
|
|
||||||
0 15 * * 1-5 curl http://127.0.0.1:10001/send_tomorrow_lessons_to_chat
|
|
||||||
0 5 20-31 12 * curl http://127.0.0.1:10001/send_new_year_to_chat
|
|
25
date/date.go
25
date/date.go
|
@ -2,31 +2,10 @@ package date
|
||||||
|
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
func Today(offset time.Duration) string {
|
func Today() int {
|
||||||
location, err := time.LoadLocation("Asia/Novosibirsk")
|
location, err := time.LoadLocation("Asia/Novosibirsk")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
return time.Now().In(location).Add(offset).Format("2006-01-02")
|
return int(time.Now().In(location).Weekday())
|
||||||
}
|
|
||||||
|
|
||||||
func GetTranslatedWeekday(date time.Time) string {
|
|
||||||
switch date.Weekday() {
|
|
||||||
case time.Monday:
|
|
||||||
return "Понедельник"
|
|
||||||
case time.Tuesday:
|
|
||||||
return "Вторник"
|
|
||||||
case time.Wednesday:
|
|
||||||
return "Среда"
|
|
||||||
case time.Thursday:
|
|
||||||
return "Четверг"
|
|
||||||
case time.Friday:
|
|
||||||
return "Пятница"
|
|
||||||
case time.Saturday:
|
|
||||||
return "Суббота"
|
|
||||||
case time.Sunday:
|
|
||||||
return "Воскресенье"
|
|
||||||
default:
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
8
go.mod
8
go.mod
|
@ -4,9 +4,13 @@ go 1.17
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/3crabs/go-yandex-weather-api v0.6.0
|
github.com/3crabs/go-yandex-weather-api v0.6.0
|
||||||
github.com/erizocosmico/go-ics v0.0.0-20180527181030-697b9000b86f
|
github.com/PuerkitoBio/goquery v1.7.1
|
||||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
|
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible
|
||||||
github.com/umputun/go-flags v1.5.1
|
github.com/umputun/go-flags v1.5.1
|
||||||
)
|
)
|
||||||
|
|
||||||
require github.com/technoweenie/multipartstreamer v1.0.1 // indirect
|
require (
|
||||||
|
github.com/andybalholm/cascadia v1.3.1 // indirect
|
||||||
|
github.com/technoweenie/multipartstreamer v1.0.1 // indirect
|
||||||
|
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f // indirect
|
||||||
|
)
|
||||||
|
|
17
go.sum
17
go.sum
|
@ -1,10 +1,23 @@
|
||||||
github.com/3crabs/go-yandex-weather-api v0.6.0 h1:EpqAfaStJNVRNRyYsvUmiNFQYGrQ+eXVP2e+vMWIh08=
|
github.com/3crabs/go-yandex-weather-api v0.6.0 h1:EpqAfaStJNVRNRyYsvUmiNFQYGrQ+eXVP2e+vMWIh08=
|
||||||
github.com/3crabs/go-yandex-weather-api v0.6.0/go.mod h1:MZLPelQjylEK4nPL9g2cpnAPtqzOpF/SrtRGWXK7QHs=
|
github.com/3crabs/go-yandex-weather-api v0.6.0/go.mod h1:MZLPelQjylEK4nPL9g2cpnAPtqzOpF/SrtRGWXK7QHs=
|
||||||
github.com/erizocosmico/go-ics v0.0.0-20180527181030-697b9000b86f h1:IUdUh6y8VDhn5iO/ggBCVb9H0vOI3MDlhDSDCrrSC8Q=
|
github.com/PuerkitoBio/goquery v1.7.1 h1:oE+T06D+1T7LNrn91B4aERsRIeCLJ/oPSa6xB9FPnz4=
|
||||||
github.com/erizocosmico/go-ics v0.0.0-20180527181030-697b9000b86f/go.mod h1:VFnDugGvBJREsor/aiVcXhvAbyjatl0AKXEaGV9u63I=
|
github.com/PuerkitoBio/goquery v1.7.1/go.mod h1:XY0pP4kfraEmmV1O7Uf6XyjoslwsneBbgeDjLYuN8xY=
|
||||||
|
github.com/andybalholm/cascadia v1.2.0/go.mod h1:YCyR8vOZT9aZ1CHEd8ap0gMVm2aFgxBp0T0eFw1RUQY=
|
||||||
|
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
|
||||||
|
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
|
||||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible h1:2cauKuaELYAEARXRkq2LrJ0yDDv1rW7+wrTEdVL3uaU=
|
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible h1:2cauKuaELYAEARXRkq2LrJ0yDDv1rW7+wrTEdVL3uaU=
|
||||||
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM=
|
github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM=
|
||||||
github.com/technoweenie/multipartstreamer v1.0.1 h1:XRztA5MXiR1TIRHxH2uNxXxaIkKQDeX7m2XsSOlQEnM=
|
github.com/technoweenie/multipartstreamer v1.0.1 h1:XRztA5MXiR1TIRHxH2uNxXxaIkKQDeX7m2XsSOlQEnM=
|
||||||
github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog=
|
github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog=
|
||||||
github.com/umputun/go-flags v1.5.1 h1:vRauoXV3Ultt1HrxivSxowbintgZLJE+EcBy5ta3/mY=
|
github.com/umputun/go-flags v1.5.1 h1:vRauoXV3Ultt1HrxivSxowbintgZLJE+EcBy5ta3/mY=
|
||||||
github.com/umputun/go-flags v1.5.1/go.mod h1:nTbvsO/hKqe7Utri/NoyN18GR3+EWf+9RrmsdwdhrEc=
|
github.com/umputun/go-flags v1.5.1/go.mod h1:nTbvsO/hKqe7Utri/NoyN18GR3+EWf+9RrmsdwdhrEc=
|
||||||
|
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f h1:OfiFi4JbukWwe3lzw+xunroH1mnC1e2Gy5cxNJApiSY=
|
||||||
|
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
|
68
main.go
68
main.go
|
@ -132,18 +132,6 @@ func run() {
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
_, _ = fmt.Fprintf(w, `{"result":"ok"}`)
|
_, _ = fmt.Fprintf(w, `{"result":"ok"}`)
|
||||||
})
|
})
|
||||||
http.HandleFunc("/send_tomorrow_lessons_to_chat", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
sendTomorrowLessonsToChat(bot, opts.ChatID, "Завтра эти пары:")
|
|
||||||
w.Header().Add("Content-Type", "application/json")
|
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
_, _ = fmt.Fprintf(w, `{"result":"ok"}`)
|
|
||||||
})
|
|
||||||
http.HandleFunc("/send_new_year_to_chat", func(w http.ResponseWriter, r *http.Request) {
|
|
||||||
sendNewYearToChat(bot, opts.ChatID, imageService)
|
|
||||||
w.Header().Add("Content-Type", "application/json")
|
|
||||||
w.WriteHeader(http.StatusOK)
|
|
||||||
_, _ = fmt.Fprintf(w, `{"result":"ok"}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
port := ":10001"
|
port := ":10001"
|
||||||
log.Println("Server is start up! port", port)
|
log.Println("Server is start up! port", port)
|
||||||
|
@ -187,10 +175,11 @@ func run() {
|
||||||
sendTodayLessonsToChat(bot, chatID, "Сегодня, "+update.Message.From.FirstName+", эти пары:")
|
sendTodayLessonsToChat(bot, chatID, "Сегодня, "+update.Message.From.FirstName+", эти пары:")
|
||||||
|
|
||||||
case commands.TomorrowLessons:
|
case commands.TomorrowLessons:
|
||||||
sendTomorrowLessonsToChat(bot, chatID, "Завтра, "+update.Message.From.FirstName+", эти пары:")
|
send(bot, tgbot.NewMessage(chatID, messages.LessonsMessage(
|
||||||
|
parser.ParseByDay(date.Today()+1),
|
||||||
case commands.AllLessons:
|
"Завтра, "+update.Message.From.FirstName+", эти пары:",
|
||||||
sendAllLessonsToChat(bot, chatID, "Пока знаю про эти пары:")
|
"Завтра пар нет",
|
||||||
|
)))
|
||||||
|
|
||||||
case commands.Weather:
|
case commands.Weather:
|
||||||
w, err := weather.GetWeatherWithCache(opts.Key, 53.346853, 83.777012, time.Hour)
|
w, err := weather.GetWeatherWithCache(opts.Key, 53.346853, 83.777012, time.Hour)
|
||||||
|
@ -200,7 +189,11 @@ func run() {
|
||||||
send(bot, tgbot.NewMessage(chatID, messages.WeatherMessage(w)))
|
send(bot, tgbot.NewMessage(chatID, messages.WeatherMessage(w)))
|
||||||
|
|
||||||
case commands.NewYear:
|
case commands.NewYear:
|
||||||
sendNewYearToChat(bot, chatID, imageService)
|
url := imageService.GetRandomImageURL()
|
||||||
|
message := imageService.GetRandomMessage()
|
||||||
|
msg := tgbot.NewPhotoShare(chatID, url)
|
||||||
|
msg.Caption = messages.NewYearMessage(message)
|
||||||
|
send(bot, msg)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
@ -215,49 +208,12 @@ func send(bot *tgbot.BotAPI, msg tgbot.Chattable) {
|
||||||
func sendTodayLessonsToChat(bot *tgbot.BotAPI, chatID int64, prefix string) {
|
func sendTodayLessonsToChat(bot *tgbot.BotAPI, chatID int64, prefix string) {
|
||||||
send(
|
send(
|
||||||
bot,
|
bot,
|
||||||
tgbot.NewMessage(
|
tgbot.NewMessage(chatID,
|
||||||
chatID,
|
|
||||||
messages.LessonsMessage(
|
messages.LessonsMessage(
|
||||||
parser.ParseByDay(date.Today(0)),
|
parser.ParseByDay(date.Today()),
|
||||||
prefix,
|
prefix,
|
||||||
"Сегодня пар нет",
|
"Сегодня пар нет",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendTomorrowLessonsToChat(bot *tgbot.BotAPI, chatID int64, prefix string) {
|
|
||||||
send(
|
|
||||||
bot,
|
|
||||||
tgbot.NewMessage(
|
|
||||||
chatID,
|
|
||||||
messages.LessonsMessage(
|
|
||||||
parser.ParseByDay(date.Today(24*time.Hour)),
|
|
||||||
prefix,
|
|
||||||
"Завтра пар нет",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func sendAllLessonsToChat(bot *tgbot.BotAPI, chatID int64, prefix string) {
|
|
||||||
send(
|
|
||||||
bot,
|
|
||||||
tgbot.NewMessage(
|
|
||||||
chatID,
|
|
||||||
messages.LessonsMessage(
|
|
||||||
parser.ParseByDay(""),
|
|
||||||
prefix,
|
|
||||||
"Пусто",
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
func sendNewYearToChat(bot *tgbot.BotAPI, chatID int64, imageService new_year_service.NewYearService) {
|
|
||||||
url := imageService.GetRandomImageURL()
|
|
||||||
message := imageService.GetRandomMessage()
|
|
||||||
msg := tgbot.NewPhotoShare(chatID, url)
|
|
||||||
msg.Caption = messages.NewYearMessage(message)
|
|
||||||
send(bot, msg)
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"student_bot/date"
|
|
||||||
"student_bot/new_year_service"
|
"student_bot/new_year_service"
|
||||||
"student_bot/parser"
|
"student_bot/parser"
|
||||||
"time"
|
"time"
|
||||||
|
@ -30,11 +29,10 @@ func ThanksMessage() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func HelpMessage(chatID int64) string {
|
func HelpMessage(chatID int64) string {
|
||||||
return "Вот чем я могу вам помочь (v1.4.6), отправь:\n\n" +
|
return "Вот чем я могу вам помочь (v1.0.4), отправь:\n\n" +
|
||||||
"- /ping отобью pong\n" +
|
"- /ping отобью pong\n" +
|
||||||
"- /today_lessons покажу расписание на сегодня\n" +
|
"- /today_lessons покажу расписание на сегодня\n" +
|
||||||
"- /tomorrow_lessons покажу расписание на завтра\n" +
|
"- /tomorrow_lessons покажу расписание на завтра\n" +
|
||||||
"- /all_lessons - пары на несколько дней\n" +
|
|
||||||
"- /weather покажу погоду у универа\n" +
|
"- /weather покажу погоду у универа\n" +
|
||||||
"- /new_year - посчитаю количество дней до нового года\n" +
|
"- /new_year - посчитаю количество дней до нового года\n" +
|
||||||
"\nНу а больше я пока ничего не умею" +
|
"\nНу а больше я пока ничего не умею" +
|
||||||
|
@ -54,30 +52,18 @@ func LessonsMessage(schedule []parser.Lesson, prefix, emptyText string) string {
|
||||||
if prefix != "" {
|
if prefix != "" {
|
||||||
s += prefix + "\n\n"
|
s += prefix + "\n\n"
|
||||||
}
|
}
|
||||||
endDate := ""
|
|
||||||
for _, l := range schedule {
|
for _, l := range schedule {
|
||||||
if endDate != l.TimeStart.Format("02.01") {
|
|
||||||
if endDate != "" {
|
|
||||||
s += "\n"
|
|
||||||
}
|
|
||||||
endDate = l.TimeStart.Format("02.01")
|
|
||||||
s += date.GetTranslatedWeekday(l.TimeStart) + " " + endDate + "\n"
|
|
||||||
}
|
|
||||||
if strings.Contains(l.User, "Ярных В.В.") {
|
if strings.Contains(l.User, "Ярных В.В.") {
|
||||||
s += "⭐️ "
|
s += "⭐️ "
|
||||||
}
|
}
|
||||||
l.Name = strings.ReplaceAll(l.Name, l.Place, "")
|
s += fmt.Sprintf("%s %s (%s)\n", l.Time, l.Name, l.Place)
|
||||||
l.Name = strings.ReplaceAll(l.Name, "()", "")
|
|
||||||
l.Name = strings.ReplaceAll(l.Name, l.TimeStart.Format("15:04"), "")
|
|
||||||
l.Name = strings.TrimSpace(l.Name)
|
|
||||||
s += fmt.Sprintf("%s %s (%s)\n%s\n", l.TimeMsg, l.Name, l.Place, l.User)
|
|
||||||
}
|
}
|
||||||
if prefix != "" {
|
if prefix != "" {
|
||||||
s += "\n" +
|
s += "\n" +
|
||||||
"Д — Димитрова 66\n" + // (Филологический, социологический)
|
"Д — Димитрова 66 (Филологический, социологический)\n" +
|
||||||
"Л — Ленина 61\n" + // (Математический, биологический)
|
"Л — Ленина 61 (Математический и биологический)\n" +
|
||||||
"М — Ленина 61а\n" + // (Исторический и географический)
|
"М — Ленина 61а (Исторический и географический)\n" +
|
||||||
"С — Социалистический 68" // (Экономический и юридический)
|
"С — Социалистический 68 (Экономический и юридический)"
|
||||||
}
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
@ -106,13 +92,10 @@ func WeatherMessage(w weather.Weather) string {
|
||||||
|
|
||||||
func NewYearMessage(message new_year_service.NewYearMessage) string {
|
func NewYearMessage(message new_year_service.NewYearMessage) string {
|
||||||
loc := time.FixedZone("UTC+7", +7*60*60)
|
loc := time.FixedZone("UTC+7", +7*60*60)
|
||||||
ny := time.Date(time.Now().Year()+1, 1, 1, 0, 0, 0, 0, loc)
|
ny := time.Date(2023, 1, 1, 0, 0, 0, 0, loc)
|
||||||
now := time.Now().In(loc)
|
now := time.Now().In(loc)
|
||||||
days := ny.Sub(now).Hours() / 24
|
days := ny.Sub(now).Hours() / 24
|
||||||
if message.Header != "" {
|
|
||||||
return fmt.Sprintf("❄ %s ❄ \n\n%s\n\n%s", toStrDays(int(days)), message.Header, message.Text)
|
return fmt.Sprintf("❄ %s ❄ \n\n%s\n\n%s", toStrDays(int(days)), message.Header, message.Text)
|
||||||
}
|
|
||||||
return fmt.Sprintf("❄ %s ❄ \n\n%s", toStrDays(int(days)), message.Text)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func toStrDays(days int) string {
|
func toStrDays(days int) string {
|
||||||
|
|
|
@ -4,10 +4,9 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"student_bot/date"
|
"student_bot/date"
|
||||||
"student_bot/parser"
|
"student_bot/parser"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
lessons := parser.ParseByDay(date.Today(-48 * time.Hour))
|
lessons := parser.ParseByDay(date.Today())
|
||||||
fmt.Println(lessons)
|
fmt.Println(lessons)
|
||||||
}
|
}
|
||||||
|
|
106
parser/parser.go
106
parser/parser.go
|
@ -1,54 +1,126 @@
|
||||||
package parser
|
package parser
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/erizocosmico/go-ics"
|
"github.com/PuerkitoBio/goquery"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const scheduleURLTemplate = "https://www.asu.ru/timetable/students/12/2129440415/?date=%s-%s"
|
||||||
|
|
||||||
type Lesson struct {
|
type Lesson struct {
|
||||||
|
Day int
|
||||||
Number string
|
Number string
|
||||||
TimeStart time.Time
|
Time string
|
||||||
TimeMsg string
|
|
||||||
Name string
|
Name string
|
||||||
User string
|
User string
|
||||||
Place string
|
Place string
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseByDay(day string) []Lesson {
|
func ParseByDay(day int) []Lesson {
|
||||||
return selectLessonsByDay(parse(), day)
|
return selectLessonsByDay(parse(), day)
|
||||||
}
|
}
|
||||||
|
|
||||||
func parse() []Lesson {
|
func parse() []Lesson {
|
||||||
link := "https://www.asu.ru/timetable/students/12/2129440415/?file=2129440415.ics"
|
location, err := time.LoadLocation("Asia/Novosibirsk")
|
||||||
calendar, err := ics.ParseCalendar(link, 0, nil)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
now := time.Now().In(location)
|
||||||
|
url := fmt.Sprintf(scheduleURLTemplate, now.Format("20060102"), now.Add(24*time.Hour).Format("20060102"))
|
||||||
|
|
||||||
var lessons []Lesson
|
// Get html
|
||||||
for _, event := range calendar.Events {
|
res, err := http.Get(url)
|
||||||
l := Lesson{
|
if err != nil {
|
||||||
Number: "",
|
log.Fatal(err)
|
||||||
TimeStart: event.Start,
|
|
||||||
TimeMsg: event.Start.Format("15:04") + " - " + event.End.Format("15:04"),
|
|
||||||
Name: event.Summary,
|
|
||||||
User: event.Description,
|
|
||||||
Place: event.Location,
|
|
||||||
}
|
}
|
||||||
|
defer func(Body io.ReadCloser) {
|
||||||
|
_ = Body.Close()
|
||||||
|
}(res.Body)
|
||||||
|
if res.StatusCode != 200 {
|
||||||
|
log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the HTML document
|
||||||
|
doc, err := goquery.NewDocumentFromReader(res.Body)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find the review items
|
||||||
|
k := 0
|
||||||
|
var lessons []Lesson
|
||||||
|
var l Lesson
|
||||||
|
doc.Find(".schedule_table tr td").Each(func(i int, s *goquery.Selection) {
|
||||||
|
text := strings.TrimSpace(s.Text())
|
||||||
|
if strings.Contains(text, "Понедельник") ||
|
||||||
|
strings.Contains(text, "Вторник") ||
|
||||||
|
strings.Contains(text, "Среда") ||
|
||||||
|
strings.Contains(text, "Четверг") ||
|
||||||
|
strings.Contains(text, "Пятница") ||
|
||||||
|
strings.Contains(text, "Суббота") {
|
||||||
|
k = 0
|
||||||
|
l = Lesson{}
|
||||||
|
if strings.Contains(text, "Понедельник") {
|
||||||
|
l.Day = 1
|
||||||
|
}
|
||||||
|
if strings.Contains(text, "Вторник") {
|
||||||
|
l.Day = 2
|
||||||
|
}
|
||||||
|
if strings.Contains(text, "Среда") {
|
||||||
|
l.Day = 3
|
||||||
|
}
|
||||||
|
if strings.Contains(text, "Четверг") {
|
||||||
|
l.Day = 4
|
||||||
|
}
|
||||||
|
if strings.Contains(text, "Пятница") {
|
||||||
|
l.Day = 5
|
||||||
|
}
|
||||||
|
if strings.Contains(text, "Суббота") {
|
||||||
|
l.Day = 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
n := (k - 1) % 6
|
||||||
|
if n == 0 {
|
||||||
|
l.Number = trim(text)
|
||||||
|
}
|
||||||
|
if n == 1 {
|
||||||
|
l.Time = trim(text)
|
||||||
|
}
|
||||||
|
if n == 2 {
|
||||||
|
l.Name = trim(text)
|
||||||
|
}
|
||||||
|
if n == 3 {
|
||||||
|
l.User = trim(text)
|
||||||
|
}
|
||||||
|
if n == 4 {
|
||||||
|
l.Place = trim(text)
|
||||||
if l.Place == "" {
|
if l.Place == "" {
|
||||||
l.Place = "не приходи"
|
l.Place = "не приходи"
|
||||||
}
|
}
|
||||||
lessons = append(lessons, l)
|
lessons = append(lessons, l)
|
||||||
}
|
}
|
||||||
|
k++
|
||||||
|
})
|
||||||
return lessons
|
return lessons
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectLessonsByDay(schedule []Lesson, day string) []Lesson {
|
func trim(s string) string {
|
||||||
|
s = strings.Replace(s, "пр.з.", "пр.", -1)
|
||||||
|
s = strings.Replace(s, " ", "", -1)
|
||||||
|
s = strings.Replace(s, "\n", " ", -1)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func selectLessonsByDay(schedule []Lesson, day int) []Lesson {
|
||||||
var todayLessons []Lesson
|
var todayLessons []Lesson
|
||||||
for _, l := range schedule {
|
for _, l := range schedule {
|
||||||
if day == "" || strings.Contains(l.TimeStart.String(), day) {
|
if l.Day == day {
|
||||||
todayLessons = append(todayLessons, l)
|
todayLessons = append(todayLessons, l)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[Service]
|
|
||||||
WorkingDirectory=/home/crab/deploys/verochka_tg_bot
|
|
||||||
ExecStart=/home/crab/deploys/verochka_tg_bot/verochka_tg_bot
|
|
||||||
Restart=always
|
|
Loading…
Reference in New Issue