Skip to content
This repository has been archived by the owner on Sep 14, 2023. It is now read-only.

Commit

Permalink
Update BarnameKon.py
Browse files Browse the repository at this point in the history
Now Barnamekon create .ics file for events.
  • Loading branch information
anvaari authored May 18, 2021
1 parent 01c9dbc commit 76c3307
Showing 1 changed file with 53 additions and 14 deletions.
67 changes: 53 additions & 14 deletions BarnameKon.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
from datetime import datetime as dt
from jdatetime import datetime as jdt
from pytz import timezone
from ics import Event,Calendar

def evligen(title,start_datetime,end_datetime,location,discription):
'''
This Function get data about event and return url for publish event
This Function get data about event and return url for publish event and ics object
Parameters
----------
Expand All @@ -35,10 +36,15 @@ def evligen(title,start_datetime,end_datetime,location,discription):
Returns
-------
str
Url for publishing event.
tuple
Url for publishing event, calendar object
'''
c=Calendar()
e=Event()
e.name=title
e.description=discription
e.location=location

main_url='https://calendar.google.com/calendar/render?action=TEMPLATE&dates={}%2F{}&details={}&location={}&text={}' #for create link we must use this format
title=urldecode(title)
Expand All @@ -52,6 +58,7 @@ def evligen(title,start_datetime,end_datetime,location,discription):
# Solve summer time
if (start_datetime.month>=4 or (start_datetime.month==3 and start_datetime.day>=22)) and (start_datetime.month<=8 or (start_datetime.month==9 and start_datetime.day<=22)):
start_datetime=dt(start_datetime.year,start_datetime.month,start_datetime.day,start_datetime.hour-1,start_datetime.minute)
e.begin=start_datetime.strftime("%Y-%m-%d %H:%m:%S")
start_datetime=start_datetime.strftime("%Y%m%dT%H%M%SZ") # Google calendar only accept this format.

end_datetime=jdt.strptime(end_datetime,"%Y/%m/%d-%H:%M").togregorian()
Expand All @@ -61,10 +68,14 @@ def evligen(title,start_datetime,end_datetime,location,discription):
# Solve summer time
if (end_datetime.month>=4 or (end_datetime.month==3 and end_datetime.day>=22)) and (end_datetime.month<=8 or (end_datetime.month==9 and end_datetime.day<=22)):
end_datetime=dt(end_datetime.year,end_datetime.month,end_datetime.day,end_datetime.hour-1,end_datetime.minute)
e.end=end_datetime.strftime("%Y-%m-%d %H:%m:%S")
end_datetime=end_datetime.strftime("%Y%m%dT%H%M%SZ")


return main_url.format(start_datetime,end_datetime,discription,location,title)

c.events.add(e)

return main_url.format(start_datetime,end_datetime,discription,location,title),c



Expand All @@ -79,8 +90,8 @@ def feed_info_to_evligen(mes_text):
Returns
-------
list
Url for publishing event generated for input message.
tuple
Url for publishing event generated for input message, calendar object for creating ics file
'''

Expand All @@ -96,7 +107,9 @@ def feed_info_to_evligen(mes_text):


sample_event='رویداد\nمقدمه ای بر مصورسازی داده در پایتون\nskyroom\n1399/11/18-17:00\n1399/11/18-19:00\nبرای مشاهده رویداد در ساعت شروع آن به ادرس زیر مراجعه کنید:‌\nhttps://skyroom.online/datavisual'
sample_event_link=feed_info_to_evligen(sample_event)
sample_event=feed_info_to_evligen(sample_event)
sample_event_link=sample_event[0]
sample_event_cal=sample_event[1]

# This part use for deploying
server = Flask(__name__)
Expand All @@ -106,7 +119,7 @@ def feed_info_to_evligen(mes_text):
# Handle 'start' command
@bot.message_handler(commands=['start'])
def handle_start(message):
bot.reply_to(message, "سلام :) \n من (برنامه کُن!) اینجا هستم تا بتونی رویداد هایی رو که میبینی به تقویم گوگلت اضافه کنی.\n برای اینکه بدونی چطوری کار میکنم /help رو وارد کن.")
bot.reply_to(message, "سلام :) \n من (برنامه کُن!) اینجا هستم تا بتونی رویداد هایی رو که میبینی به تقویم هات اضافه کنی.\n برای اینکه بدونی چطوری کار میکنم /help رو وارد کن.")
bot.send_sticker(message.chat.id,'CAACAgQAAxkBAANKYCDnIB96YtMVvksVg9J5rCHu_lEAAtoBAAIhiDAI59nW5NwpahkeBA')
if message.chat.type == 'private':
bot.send_message(log_chat_id,'@{} Start. ID: {}\n'.format(message.from_user.username,message.chat.id))
Expand All @@ -118,28 +131,54 @@ def handle_start(message):
@bot.message_handler(commands=['help'])
def handle_help(message):
if message.chat.type=='private':
bot.send_message(message.chat.id,'برای دریافت لینک رویداد اطلاعات رویداد رو به فرمت زیر برای من بفرست:')
bot.send_message(message.chat.id,'برای دریافت لینک اضافه کردن به تقویم گوگل و فایل ics رویداد اطلاعات رویداد رو به فرمت زیر برای من بفرست:')
bot.send_message(message.chat.id,'رویداد \nعنوان رویداد\nمکان رویداد\nزمان و تاریخ شروع به فرمت پیام بعد\nزمان و تاریخ پایان به فرمت پیام بعد\nتوضیحات رویداد (شامل لینک و باقی توضیحات)')
bot.send_message(message.chat.id,sample_event)
bot.send_message(message.chat.id,f'لینک رویداد نمونه بالا : \n{sample_event_link}')
bot.send_message(message.chat.id,f'لینک اضافه کردن رویداد نمونه بالا به تقویم گوگل : \n{sample_event_link}')
with open('your.ics','w') as fp:
fp.writelines(sample_event_cal)
with open('your.ics','rb') as fp:
bot.send_message(message.chat.id,'فایل ics این رویداد ')
bot.send_document(message.chat.id, fp)
else:
bot.send_message(message.chat.id,'برای دریافت لینک رویداد اطلاعات رویداد رو به فرمت زیر به همین پیام Reply بزن :)')
bot.send_message(message.chat.id,'برای دریافت لینک اضافه کردن به تقویم گوگل و فایل ics رویداد اطلاعات رویداد رو به فرمت زیر به همین پیام Reply بزن :)')
bot.send_message(message.chat.id,'رویداد \nعنوان رویداد\nمکان رویداد\nزمان و تاریخ شروع به فرمت پیام بعد\nزمان و تاریخ پایان به فرمت پیام بعد\nتوضیحات رویداد (شامل لینک و باقی توضیحات)')
bot.send_message(message.chat.id,sample_event)
bot.send_message(message.chat.id,f'لینک رویداد نمونه بالا : \n{sample_event_link}')
bot.send_message(message.chat.id,f'لینک اضافه کردن رویداد نمونه بالا به تقویم گوگل : \n{sample_event_link}')
with open('your.ics','w') as fp:
fp.writelines(sample_event_cal)
with open('your.ics','rb') as fp:
bot.send_message(message.chat.id,'فایل ics این رویداد ')
bot.send_document(message.chat.id, fp)

# Handle text message
@bot.message_handler(content_types=['text'])
def handle_text(message):
if 'رویداد' in message.text :
try:
if message.chat.type=='private':
event_link=feed_info_to_evligen(message.text)
event=feed_info_to_evligen(message.text)
calendar=event[1]
event_link=event[0]
bot.send_message(message.chat.id,f'لینک رویداد شما :\n{event_link}')
with open('your.ics','w') as fp:
fp.writelines(calendar)
with open('your.ics','rb') as fp:
bot.send_message(message.chat.id,'فایل ics رویداد شما')
bot.send_document(message.chat.id, fp)
bot.send_message(log_chat_id,'@{} Create Link. ID: {}\n'.format(message.from_user.username,message.chat.id))


else:
event_link=feed_info_to_evligen(message.text)
event=feed_info_to_evligen(message.text)
calendar=event[1]
event_link=event[0]
bot.reply_to(message,f'لینک رویداد شما :\n{event_link}')
with open('your.ics','w') as fp:
fp.writelines(calendar)
with open('your.ics','rb') as fp:
bot.send_message(message.chat.id,'فایل ics رویداد شما')
bot.send_document(message.chat.id, fp)
bot.send_message(log_chat_id,'@{} Create Link in {} group @{}\n'.format(message.from_user.username,message.chat.title,message.chat.username))
except:
bot.send_message(message.chat.id,"غالب اطلاعات ارسالی درست نیست. لطفا یه نگاهی به راهنمای برنامه کُن بنداز : /help")
Expand Down

0 comments on commit 76c3307

Please sign in to comment.