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
 | 
			
		||||
    settings:
 | 
			
		||||
      host:
 | 
			
		||||
        from_secret: server_ip
 | 
			
		||||
        from_secret: ssh_ip
 | 
			
		||||
      username:
 | 
			
		||||
        from_secret: ssh_user
 | 
			
		||||
      key:
 | 
			
		||||
        from_secret: ssh_key
 | 
			
		||||
        from_secret: ssh_login
 | 
			
		||||
      password:
 | 
			
		||||
        from_secret: ssh_pass
 | 
			
		||||
      port:
 | 
			
		||||
        from_secret: ssh_port
 | 
			
		||||
      target:
 | 
			
		||||
        - deploys/verochka_tg_bot
 | 
			
		||||
        - bots/verochka_tg_bot
 | 
			
		||||
      source:
 | 
			
		||||
        - verochka_tg_bot
 | 
			
		||||
        - config
 | 
			
		||||
@ -39,21 +39,21 @@ steps:
 | 
			
		||||
        from_secret: ssh_pass
 | 
			
		||||
    settings:
 | 
			
		||||
      host:
 | 
			
		||||
        from_secret: server_ip
 | 
			
		||||
        from_secret: ssh_ip
 | 
			
		||||
      username:
 | 
			
		||||
        from_secret: ssh_user
 | 
			
		||||
      key:
 | 
			
		||||
        from_secret: ssh_key
 | 
			
		||||
        from_secret: ssh_login
 | 
			
		||||
      password:
 | 
			
		||||
        from_secret: ssh_pass
 | 
			
		||||
      port:
 | 
			
		||||
        from_secret: ssh_port
 | 
			
		||||
      envs: [ TOKEN,TOKEN_WEATHER,CHAT_ID,PASSWORD ]
 | 
			
		||||
      command_timeout: 10s
 | 
			
		||||
      script:
 | 
			
		||||
        - cd deploys/verochka_tg_bot
 | 
			
		||||
        - cd bots/verochka_tg_bot
 | 
			
		||||
        - echo $${TOKEN} > token.txt
 | 
			
		||||
        - echo $${TOKEN_WEATHER} > token_weather.txt
 | 
			
		||||
        - echo $${CHAT_ID} > chat_id.txt
 | 
			
		||||
        - echo $${PASSWORD} | sudo -S systemctl restart verochka
 | 
			
		||||
        - echo $${CHAT_ID} > token_weather.txt
 | 
			
		||||
        - echo $${PASSWORD} | sudo -S systemctl restart verochka_tg_bot
 | 
			
		||||
 | 
			
		||||
trigger:
 | 
			
		||||
  event:
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								README.md
									
									
									
									
									
								
							@ -3,6 +3,13 @@
 | 
			
		||||
 | 
			
		||||
## develop
 | 
			
		||||
 | 
			
		||||
    git clone https://git.3crabs.ru/VLADIMIR/verochka verochka
 | 
			
		||||
    cd verochka
 | 
			
		||||
    git clone https://github.com/3crabs/student-verochka-bot student_bot
 | 
			
		||||
    cd student_bot
 | 
			
		||||
    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 - пары сегодня
 | 
			
		||||
//tomorrow_lessons - пары завтра
 | 
			
		||||
//all_lessons - пары на несколько дней
 | 
			
		||||
//weather - погода у универа
 | 
			
		||||
//new_year - дней до нового года
 | 
			
		||||
//ping - проверка связи
 | 
			
		||||
@ -15,7 +14,6 @@ const (
 | 
			
		||||
	Ping            = Command("/ping")
 | 
			
		||||
	TodayLessons    = Command("/today_lessons")
 | 
			
		||||
	TomorrowLessons = Command("/tomorrow_lessons")
 | 
			
		||||
	AllLessons      = Command("/all_lessons")
 | 
			
		||||
	Weather         = Command("/weather")
 | 
			
		||||
	NewYear         = Command("/new_year")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -38,84 +38,84 @@
 | 
			
		||||
  ],
 | 
			
		||||
  "messages": [
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Пусть новогодние огни\nПоднимут настроение.\nПусть в дом уверенно войдут\nДостаток и везение!\n\nЗдоровья крепкого семье\nИ всяческих свершений.\nИ в ночь волшебную достичь\nЖеланий исполнения!\n\nЛюбви, добра и красоты,\nУспехов и подарков!\nИ пусть счастливым будет год —\nБогатым, добрым, ярким!"
 | 
			
		||||
      "header": "Мокрый Новый год в Таиланде",
 | 
			
		||||
      "text": "Тайцы очень любят праздники и не отказываются от лишнего повода повеселиться. Возможно, поэтому они отмечают Новый год трижды: европейский новый год, китайский и свой собственный праздник смены года — Сонгкран. Сонгкран празднуется в апреле несколько дней подряд. В это время тайцы выходят на улицы, чтобы пожелать друг другу счастья и... облить водой с головы до ног. Считается, что чем быстрее и сильнее ты промокнешь, тем больше счастья придет в новом году."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом поздравляю!\nИ желаю волшебства,\nЧтобы жизнь веселой сказкой\nНепременно ожила!\n\nЧтобы радости мгновений\nБыло больше с каждым днем,\nИ удача без сомнений\nПоселилась прямо в дом!\n\nПусть гремят кругом салюты,\nНовый год уж наступил,\nПробежавшие минуты\nПусть добавят в жизни сил!"
 | 
			
		||||
      "header": "Рождественское полено в странах Европы",
 | 
			
		||||
      "text": "Во многих европейских странах существовал обычай в рождественский сочельник зажигать в очаге полено. По традиции, полено должно было тлеть в камине на протяжении нескольких дней. В течение этого времени дерево поливали вином и медом, посыпали зерном и клали на него кусочки еды, чтобы год был плодородным и счастливым. Пепел от полена хранили весь год, добавляя его в еду и напитки от всех болезней. С течением времени эта трудоемкая традиция ушла в прошлое, но в память о ней в некоторых европейских странах едят рождественский торт под названием «Полено»."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом поздравляю!\nИ желаю перемен,\nЧтобы не было печалей,\nЧтобы не было проблем!\n\nЧтобы жили − не тужили,\nИ мечтать всегда могли,\nСвой доход приумножали,\nСвое счастье берегли!\n\nЧтобы радостных мгновений\nБыло больше с каждым днем,\nЧтобы праздничным салютом\nОсвещен был Новый год!"
 | 
			
		||||
      "header": "В Новый год с новым именем в Микронезии",
 | 
			
		||||
      "text": "На некоторых островах Микронезии каждый год люди берут себе новое имя. 1 января они нашептывают свое новое имя родственникам и друзьям, при этом бьют в барабан или шумят, чтобы их не подслушали злые духи. Из-за этой традиции часто происходят казусы: однажды половина жителей одного из островов весь год носила имя Майкл Джексон."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Вот растаял старый год,\nКак снежинка на ладошке.\nНовый год спешит рассыпать\nСчастье в каждое окошко.\n\nПусть он радость принесет\nОптимизма и веселья!\nБудто жемчуг соберет\nВсе желанья в ожерелье.\n\nИ исполнит всё-всё-всё,\nЧто задумывалось вами.\nЖизнь наполнит добротой,\nВолшебством и чудесами!"
 | 
			
		||||
      "header": "Мусорный дождь в новогоднюю ночь в Италии",
 | 
			
		||||
      "text": "В Италии считают, что, вступая в новый год, нужно непременно избавиться от всего старого и ненужного. В канун Нового года темпераментные итальянцы выбрасывают старые вещи прямо из окон своих домов. В былые времена на улицы летела даже сломанная мебель. Сейчас же можно попасть под «обстрел» старыми бумагами и мелким мусором."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Пусть этот славный Новый год\nПодарит счастье и удачу,\nЗдоровья много принесет\nИ денег океан в придачу!\n\nПусть все исполнятся мечты,\nУлыбка пусть сияет ярко!\nЖелаю мира, доброты\nИ замечательных подарков!"
 | 
			
		||||
      "header": "С чемоданом вокруг дома в Эквадоре",
 | 
			
		||||
      "text": "Чтобы год был наполнен множеством путешествий, эквадорцы рекомендуют совершить первое из них прямо в новогоднюю ночь. Для этого нужно обежать вокруг дома с чемоданом в руках, пока часы бьют двенадцать раз."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Какая сказка за окном!\nКружат снежинки, будто в вальсе,\nВесь мир пропитан волшебством,\nИ воздух переполнен счастьем.\n\nПусть в этот чудный Новый год\nУдача в двери постучится,\nИ счастье вместе с ней войдет,\nИ все, что хочешь ты, случится!"
 | 
			
		||||
      "header": "Виноградины успеха в Испании",
 | 
			
		||||
      "text": "В винных столицах мира ни одно торжество не обходится без винограда. В Испании для всех участников новогоднего застолья заранее подготавливают по двенадцать виноградин (число ударов новогоднего колокола). Испанцы верят, что если все ягоды будут съедены за двенадцать ударов, год обязательно будет успешным."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Желаю в новом вам году\nПоймать удачу на ходу.\nВсех удивлять, все успевать,\nСмеяться и не унывать.\n\nЛюбить, надеяться и верить\nИ счастье на себя примерить,\nИ никогда вам не тужить,\nИ просто интересно жить!"
 | 
			
		||||
      "header": "Гном и битье посуды в Швеции",
 | 
			
		||||
      "text": "В Швеции, в отличие от большинства европейских стран, подарки детям приносит не высокий бородатый старик, а гном Юль Томтен. А помогают ему разные зверюшки, тролли, феи, принц с принцессой и даже Снежная Королева. Шведы очень любят разные гадания. В новогоднюю ночь они разбивают тарелки о двери соседей. Чем мельче осколки, тем больше счастья придет в новом году."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Счастье, радость и веселье\nПусть подарит Новый год!\nИ удачи пусть под елку\nВам побольше принесет.\n\nПусть положит под подушку\nПуд тепла и доброты,\nА в ладошке тихо спрячет\nИсполнение мечты.\n\nИз любви и вдохновенья\nПусть сплетет простой венок\nИ завяжет тихо-тихо\nВам на счастье узелок."
 | 
			
		||||
      "header": "Во Вьетнаме Новый год встречают со стариками",
 | 
			
		||||
      "text": "Вьетнамцы считают, что если за новогодним столом сидит человек старше семидесяти лет, его мудрость распространится на всех присутствующих. И чем старше гость, тем больше почета ему оказывают."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Пусть этот праздник принесет\nВсё то, что в жизни много значит!\nЖелаю в светлый Новый год\nДобра, здоровья и удачи!\n\nПускай веселый смех звучит,\nА сердце — счастье заполняет,\nВедь дед Мороз осуществит\nВсё, что душа твоя желает!"
 | 
			
		||||
      "header": "Ожившие сказки Англии и поцелуи под омелой",
 | 
			
		||||
      "text": "Новый год в Англии отмечается традиционным карнавальным шествием, которое возглавляет Лорд Беспорядок. В толпе сказочных героев можно увидеть Мартовского зайца, Шалтая-Болтая и прочих любимцев детей. Дома и улицы Англии украшаются венками из омелы, которая, по поверьям, обладает магической силой. Во время звона новогоднего колокола влюбленные целуются под таким венком, чтобы жить в согласии."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Пожелаю в Новый год,\nЧтобы шел год без хлопот,\nПодарил Вам много счастья\nИ укрыл от всех ненастий.\n\nПусть случится волшебство,\nДарит радость торжество.\nПусть все сбудутся мечты.\nСчастья, мира, доброты!"
 | 
			
		||||
      "header": "В Голландии идут в гости со спичками",
 | 
			
		||||
      "text": "Голландцы идут на новогодний ужин, захватив с собой спичку. Спичка впоследствии сжигается в камине. Если она сгорает полностью, год будет очень счастливым."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом поздравляю\nИ от всей души желаю\nВеселиться и смеяться,\nНи на что не обижаться,\nЖить легко и без забот\nВесь грядущий новый год.\n\nНаслаждаться каждым мигом\nИ дарить свое тепло,\nБыть всегда на позитиве,\nЧтоб всегда во всём везло!\n\nС Новым годом! С новым счастьем!\nСмеха, мира и добра!\nПусть обходят все ненастья,\nЖизнь одарит вас сполна!"
 | 
			
		||||
      "header": "Бочка дегтя в Шотландии",
 | 
			
		||||
      "text": "В некоторых городах Шотландии в новогоднюю ночь поджигают бочки с дегтем и катят их по улицам города. Так сжигают старый год и очищают дорогу новому. Если вам предстоит новогодний ужин у шотландца, не забудьте захватить с собой уголек, чтобы бросить его в очаг хозяина. Таким образом в Шотландии желают удачи в новом году."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом, с Новым годом!\nПусть здоровье входит в дом,\nПусть Мороз рукою легкой\nРазбросает счастье в нем!\n\nБудет пусть он полон смеха,\nИ любви, и доброты,\nЧтоб заботы — не помеха,\nДостатка, мира, красоты!"
 | 
			
		||||
      "header": "Японцы загребают счастье граблями",
 | 
			
		||||
      "text": "В Японии к Новому году принято украшать дома бамбуковыми граблями. Считается, что если в доме нет граблей, то нечем будет загребать счастье. В первые секунды нового года японцы громко смеются, чтобы год был веселым и радостным."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом! С Новым счастьем!\nПусть исполнятся мечты,\nВ миг чудесный, в миг прекрасный,\nВ новогодний дивный миг!\n\nЧтобы было чудо в доме,\nРадость, счастье, волшебство,\nПозитив, тепло, веселье,\nИ здоровье, и добро!\n\nПусть умножатся доходы,\nКлассных, выгодных идей,\nЧтобы были только лучше,\nЧтобы жили веселей!"
 | 
			
		||||
      "header": "Во Франции у кого боб, тот и король",
 | 
			
		||||
      "text": "В католической Франции зимние праздники заканчиваются 6 января на Богоявление. Этот праздник посвящен библейскому сюжету о трех волхвах, которые принесли дары младенцу Христу. В современной Франции в этот день едят знаменитый слоеный пирог с начинкой из миндаля — Пирог Волхвов. Пирог разрезается на части, один из гостей забирается под стол и оттуда выкрикивает, кому какой кусок следует отдать. В прежние времена в пироге запекался боб, и человек, которому он попадался, становился королем вечера. Сейчас в пирог кладут керамическую фигурку и корону из картона."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Пусть в Новом году всё плохое сотрется,\nКак ластик стирает ненужный нам штрих!\nПусть самое лучшее вам улыбнется,\nИ ярким пусть будет в году каждый миг!\n\nЗдоровья, успехов и много везенья,\nДостатка и благ в наступившем году!\nОтличных идей и всегда вдохновенья!\nВсего лишь хорошего в вашу судьбу!"
 | 
			
		||||
      "header": "В Бразилии «море пламенем горит»",
 | 
			
		||||
      "text": "В жаркой Бразилии в новогоднюю ночь океан сверкает огнями. По традиции, люди загадывают желания и пускают по воде плоты со свечами и дарами богине моря. В прибрежные волны бросают лепестки белых цветов в надежде, что океан примет желания и не выбросит лепестки на берег. Приход Нового года сопровождает выстрел из пушки, после которого бразильцы обнимают всех вокруг, чтобы год был полон любви."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Пусть год уходящий с собой заберет\nПроблемы, недуги, ненастье,\nА новый − здоровье и радость несет,\nЛюбовь доброту и участье!\n\nЧудес новогодних, добра, волшебства,\nУюта, семейного счастья,\nУлыбок, веселья, достатка, тепла,\nНе знать ни забот, ни напастей."
 | 
			
		||||
      "header": "В Венгрии освистывают злых духов",
 | 
			
		||||
      "text": "Венгры уверены в том, что злые духи очень боятся звука свистков и дудочек. Чтобы наступающий год был счастливым, перед его приходом обязательно нужно очистить города от духов-вредителей. И в новогоднюю ночь Венгрия наполняется громкими трелями и свистом."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Желаю в этот Новый год\nПоменьше грусти и забот,\nПобольше счастья и добра,\nУлыбок, нежности, тепла!\n\nЧтоб были верными друзья\nИ очень дружною семья,\nЧтоб каждый день удачным был,\nИ чтоб на всё хватало сил!\n\nНу а ещё пусть Новый год\nПобольше денег принесёт,\nЗдоровья, мира и любви,\nЧтоб в сердце не было зимы!"
 | 
			
		||||
      "header": "Чтобы год был сладким, в Израиле едят сладости",
 | 
			
		||||
      "text": "В Израиле отмечают Новый год в сентябре. Во время праздника едят сладкую пищу. Даже рыбу поливают медом. От горькой еды стараются отказаться, чтобы не привлечь «горькую» жизнь в новом году."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом поздравляю\nИ от всей души желаю,\nЧтоб сбывались все мечты,\nВ праздник зимней красоты!\n\nЧтобы счастье приходило,\nВам везение дарило,\nА еще успех и радость,\nЧудеса, удачи сладость!"
 | 
			
		||||
      "header": "Кубинцы смывают грехи в новогоднюю ночь",
 | 
			
		||||
      "text": "В день перед Новым годом на Кубе наливают воду в кружки, тазы и кастрюли. Каждый набирает столько воды, сколько, по его мнению, грехов он совершил за год. После полуночи вода выливается за порог, что символизирует очищение от пороков."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "С Новым годом! С новым счастьем!\nНикогда не знать ненастья,\nВерить в чудо и добро,\nЧтоб плохое всё ушло!\n\nЖить и жизнью наслаждаться,\nНикогда не огорчаться,\nБыть любимыми, любить\nИ тепло души дарить.\n\nДобрых лишь людей встречать,\nО заботах не ворчать,\nВерных, преданных друзей,\nСамых лучших, светлых дней!"
 | 
			
		||||
      "header": "Пауза для поцелуев в Болгарии и кизиловые палочки",
 | 
			
		||||
      "text": "Во время празднования Нового года в Болгарии во всех домах на три минуты выключают свет. В это время можно поцеловаться с тем, с кем не решался сделать это при свете. А 1 января болгарские дети идут поздравлять взрослых с кизиловыми палочками в руках. Дети стучат палочками друг о друга, после чего получают подарки."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Новый Год — прекрасный праздник,\nПусть в нем крупно повезет,\nНастроенье будет ясным,\nА удача — круглый год!\n\nВ чудеса поверить нужно,\nИ они придут к тебе\nИ помогут вместе, дружно\nК небесам взлететь мечте.\n\nВаша жизнь пусть станет сказкой,\nБудет в ней всегда добро,\nЖизнь наполнит счастьем, лаской,\nПусть все будет хорошо!"
 | 
			
		||||
      "header": "Санта Клаус — серфингист в Австралии",
 | 
			
		||||
      "text": "Новый год отмечается в Австралии летом. Жара вынуждает Санту избавиться от теплой шубы, и из всего праздничного костюма на нем часто остаются лишь красные плавки, борода и колпак. Оленям жары тоже не вынести, и на санях без снега не проехать, поэтому Санта Клаус доставляет подарки на серфе. Толпа встречает его на пляже радостными криками и фейерверками."
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "header": "",
 | 
			
		||||
      "text": "Вот приходит Новый год\nИ с собой он пусть несет\nМного счастья, много смеха,\nВ жизни и в делах — успеха.\n\nЯрких, творческих идей,\nСамых преданных друзей.\nИ любви − огромной, чистой,\nИ улыбок − лишь лучистых!"
 | 
			
		||||
      "header": "Камень за пазухой в Греции",
 | 
			
		||||
      "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"
 | 
			
		||||
 | 
			
		||||
func Today(offset time.Duration) string {
 | 
			
		||||
func Today() int {
 | 
			
		||||
	location, err := time.LoadLocation("Asia/Novosibirsk")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
	return time.Now().In(location).Add(offset).Format("2006-01-02")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 ""
 | 
			
		||||
	}
 | 
			
		||||
	return int(time.Now().In(location).Weekday())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								go.mod
									
									
									
									
									
								
							@ -4,9 +4,13 @@ go 1.17
 | 
			
		||||
 | 
			
		||||
require (
 | 
			
		||||
	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/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/go.mod h1:MZLPelQjylEK4nPL9g2cpnAPtqzOpF/SrtRGWXK7QHs=
 | 
			
		||||
github.com/erizocosmico/go-ics v0.0.0-20180527181030-697b9000b86f h1:IUdUh6y8VDhn5iO/ggBCVb9H0vOI3MDlhDSDCrrSC8Q=
 | 
			
		||||
github.com/erizocosmico/go-ics v0.0.0-20180527181030-697b9000b86f/go.mod h1:VFnDugGvBJREsor/aiVcXhvAbyjatl0AKXEaGV9u63I=
 | 
			
		||||
github.com/PuerkitoBio/goquery v1.7.1 h1:oE+T06D+1T7LNrn91B4aERsRIeCLJ/oPSa6xB9FPnz4=
 | 
			
		||||
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/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM=
 | 
			
		||||
github.com/technoweenie/multipartstreamer v1.0.1 h1:XRztA5MXiR1TIRHxH2uNxXxaIkKQDeX7m2XsSOlQEnM=
 | 
			
		||||
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/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)
 | 
			
		||||
			_, _ = 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"
 | 
			
		||||
		log.Println("Server is start up! port", port)
 | 
			
		||||
@ -187,10 +175,11 @@ func run() {
 | 
			
		||||
			sendTodayLessonsToChat(bot, chatID, "Сегодня, "+update.Message.From.FirstName+", эти пары:")
 | 
			
		||||
 | 
			
		||||
		case commands.TomorrowLessons:
 | 
			
		||||
			sendTomorrowLessonsToChat(bot, chatID, "Завтра, "+update.Message.From.FirstName+", эти пары:")
 | 
			
		||||
 | 
			
		||||
		case commands.AllLessons:
 | 
			
		||||
			sendAllLessonsToChat(bot, chatID, "Пока знаю про эти пары:")
 | 
			
		||||
			send(bot, tgbot.NewMessage(chatID, messages.LessonsMessage(
 | 
			
		||||
				parser.ParseByDay(date.Today()+1),
 | 
			
		||||
				"Завтра, "+update.Message.From.FirstName+", эти пары:",
 | 
			
		||||
				"Завтра пар нет",
 | 
			
		||||
			)))
 | 
			
		||||
 | 
			
		||||
		case commands.Weather:
 | 
			
		||||
			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)))
 | 
			
		||||
 | 
			
		||||
		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:
 | 
			
		||||
		}
 | 
			
		||||
@ -215,49 +208,12 @@ func send(bot *tgbot.BotAPI, msg tgbot.Chattable) {
 | 
			
		||||
func sendTodayLessonsToChat(bot *tgbot.BotAPI, chatID int64, prefix string) {
 | 
			
		||||
	send(
 | 
			
		||||
		bot,
 | 
			
		||||
		tgbot.NewMessage(
 | 
			
		||||
			chatID,
 | 
			
		||||
		tgbot.NewMessage(chatID,
 | 
			
		||||
			messages.LessonsMessage(
 | 
			
		||||
				parser.ParseByDay(date.Today(0)),
 | 
			
		||||
				parser.ParseByDay(date.Today()),
 | 
			
		||||
				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"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"student_bot/date"
 | 
			
		||||
	"student_bot/new_year_service"
 | 
			
		||||
	"student_bot/parser"
 | 
			
		||||
	"time"
 | 
			
		||||
@ -30,11 +29,10 @@ func ThanksMessage() string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func HelpMessage(chatID int64) string {
 | 
			
		||||
	return "Вот чем я могу вам помочь (v1.4.6), отправь:\n\n" +
 | 
			
		||||
	return "Вот чем я могу вам помочь (v1.0.4), отправь:\n\n" +
 | 
			
		||||
		"- /ping отобью pong\n" +
 | 
			
		||||
		"- /today_lessons покажу расписание на сегодня\n" +
 | 
			
		||||
		"- /tomorrow_lessons покажу расписание на завтра\n" +
 | 
			
		||||
		"- /all_lessons - пары на несколько дней\n" +
 | 
			
		||||
		"- /weather покажу погоду у универа\n" +
 | 
			
		||||
		"- /new_year - посчитаю количество дней до нового года\n" +
 | 
			
		||||
		"\nНу а больше я пока ничего не умею" +
 | 
			
		||||
@ -54,30 +52,18 @@ func LessonsMessage(schedule []parser.Lesson, prefix, emptyText string) string {
 | 
			
		||||
	if prefix != "" {
 | 
			
		||||
		s += prefix + "\n\n"
 | 
			
		||||
	}
 | 
			
		||||
	endDate := ""
 | 
			
		||||
	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, "Ярных В.В.") {
 | 
			
		||||
			s += "⭐️ "
 | 
			
		||||
		}
 | 
			
		||||
		l.Name = strings.ReplaceAll(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)
 | 
			
		||||
		s += fmt.Sprintf("%s %s (%s)\n", l.Time, l.Name, l.Place)
 | 
			
		||||
	}
 | 
			
		||||
	if prefix != "" {
 | 
			
		||||
		s += "\n" +
 | 
			
		||||
			"Д — Димитрова 66\n" + // (Филологический, социологический)
 | 
			
		||||
			"Л — Ленина 61\n" + // (Математический, биологический)
 | 
			
		||||
			"М — Ленина 61а\n" + // (Исторический и географический)
 | 
			
		||||
			"С — Социалистический 68" // (Экономический и юридический)
 | 
			
		||||
			"Д — Димитрова 66 (Филологический, социологический)\n" +
 | 
			
		||||
			"Л — Ленина 61 (Математический и биологический)\n" +
 | 
			
		||||
			"М — Ленина 61а (Исторический и географический)\n" +
 | 
			
		||||
			"С — Социалистический 68 (Экономический и юридический)"
 | 
			
		||||
	}
 | 
			
		||||
	return s
 | 
			
		||||
}
 | 
			
		||||
@ -106,13 +92,10 @@ func WeatherMessage(w weather.Weather) string {
 | 
			
		||||
 | 
			
		||||
func NewYearMessage(message new_year_service.NewYearMessage) string {
 | 
			
		||||
	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)
 | 
			
		||||
	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", toStrDays(int(days)), message.Text)
 | 
			
		||||
	return fmt.Sprintf("❄ %s ❄ \n\n%s\n\n%s", toStrDays(int(days)), message.Header, message.Text)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func toStrDays(days int) string {
 | 
			
		||||
 | 
			
		||||
@ -4,10 +4,9 @@ import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"student_bot/date"
 | 
			
		||||
	"student_bot/parser"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	lessons := parser.ParseByDay(date.Today(-48 * time.Hour))
 | 
			
		||||
	lessons := parser.ParseByDay(date.Today())
 | 
			
		||||
	fmt.Println(lessons)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										124
									
								
								parser/parser.go
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								parser/parser.go
									
									
									
									
									
								
							@ -1,54 +1,126 @@
 | 
			
		||||
package parser
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"log"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"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 {
 | 
			
		||||
	Number    string
 | 
			
		||||
	TimeStart time.Time
 | 
			
		||||
	TimeMsg   string
 | 
			
		||||
	Name      string
 | 
			
		||||
	User      string
 | 
			
		||||
	Place     string
 | 
			
		||||
	Day    int
 | 
			
		||||
	Number string
 | 
			
		||||
	Time   string
 | 
			
		||||
	Name   string
 | 
			
		||||
	User   string
 | 
			
		||||
	Place  string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ParseByDay(day string) []Lesson {
 | 
			
		||||
func ParseByDay(day int) []Lesson {
 | 
			
		||||
	return selectLessonsByDay(parse(), day)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parse() []Lesson {
 | 
			
		||||
	link := "https://www.asu.ru/timetable/students/12/2129440415/?file=2129440415.ics"
 | 
			
		||||
	calendar, err := ics.ParseCalendar(link, 0, nil)
 | 
			
		||||
	location, err := time.LoadLocation("Asia/Novosibirsk")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
	now := time.Now().In(location)
 | 
			
		||||
	url := fmt.Sprintf(scheduleURLTemplate, now.Format("20060102"), now.Add(24*time.Hour).Format("20060102"))
 | 
			
		||||
 | 
			
		||||
	var lessons []Lesson
 | 
			
		||||
	for _, event := range calendar.Events {
 | 
			
		||||
		l := Lesson{
 | 
			
		||||
			Number:    "",
 | 
			
		||||
			TimeStart: event.Start,
 | 
			
		||||
			TimeMsg:   event.Start.Format("15:04") + " - " + event.End.Format("15:04"),
 | 
			
		||||
			Name:      event.Summary,
 | 
			
		||||
			User:      event.Description,
 | 
			
		||||
			Place:     event.Location,
 | 
			
		||||
		}
 | 
			
		||||
		if l.Place == "" {
 | 
			
		||||
			l.Place = "не приходи"
 | 
			
		||||
		}
 | 
			
		||||
		lessons = append(lessons, l)
 | 
			
		||||
	// Get html
 | 
			
		||||
	res, err := http.Get(url)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	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 == "" {
 | 
			
		||||
				l.Place = "не приходи"
 | 
			
		||||
			}
 | 
			
		||||
			lessons = append(lessons, l)
 | 
			
		||||
		}
 | 
			
		||||
		k++
 | 
			
		||||
	})
 | 
			
		||||
	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
 | 
			
		||||
	for _, l := range schedule {
 | 
			
		||||
		if day == "" || strings.Contains(l.TimeStart.String(), day) {
 | 
			
		||||
		if l.Day == day {
 | 
			
		||||
			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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user