def send_folio_roboad(channel): """おまかせの資産の通知 """ roboad = folio_repository.fetch_roboad() if roboad['status'] == 'NG': post_message = '```データの取得に失敗しました```' slack_messenger.post(post_message, channel) deposit = '{:,}'.format(roboad['deposit']) gains_amount = '{:,}'.format(roboad['gains']['amount']) gains_rate = '{:.2%}'.format(roboad['gains']['rate']) previous_amount = '{:,}'.format(roboad['previous_day']['amount']) previous_rate = '{:.2%}'.format(roboad['previous_day']['rate']) post_message = "おまかせの資産の取得に成功しました!\n" post_message += "お預かり資産: {}円\n".format(deposit) post_message += "含み損益: {} ({})\n".format(gains_amount, gains_rate) post_message += "前日比: {} ({})\n".format(previous_amount, previous_rate) if roboad['previous_day']['amount'] > 0: post_message += '前日比がプラスになっています!\n' else: post_message += '前日比がマイナスになっています…\n' post_message += '詳しくは: https://folio-sec.com/mypage/assets/omakase' slack_messenger.post( post_message, channel, as_user=False, icon_emoji=':moneybag:', username='******') print('[info] message is posted. ch:[{ch}] message:[{me}]'.format( ch=channel, me=post_message[:10]))
def send_folio_sammary(channel): sammary = folio_repository.fetch_sammary() if sammary['status'] == 'NG': post_message = '```データの取得に失敗しました```' slack_messenger.post(post_message, channel) total = '{:,}'.format(sammary['total']) gains_amount = '{:,}'.format(sammary['gains']['amount']) gains_rate = '{:.2%}'.format(sammary['gains']['rate']) previous_amount = '{:,}'.format(sammary['previous_day']['amount']) previous_rate = '{:.2%}'.format(sammary['previous_day']['rate']) post_message = "資産概要の取得に成功しました!\n" post_message += "すべての資産: {}円\n".format(total) post_message += "含み損益: {} ({})\n".format(gains_amount, gains_rate) post_message += "前日比: {} ({})\n".format(previous_amount, previous_rate) if sammary['previous_day']['amount'] > 0: post_message += '前日比がプラスになっています!\n' else: post_message += '前日比がマイナスになっています…\n' post_message += '詳しくは: https://folio-sec.com/mypage/assets' slack_messenger.post( post_message, channel, as_user=False, icon_emoji=':moneybag:', username='******') print('[info] message is posted. ch:[{ch}] message:[{me}]'.format( ch=channel, me=post_message[:10]))
def post_htb_hotentry(message, *args): print(f'[info] listen to message. text=[{message.body["text"]}]') channel = message.body['channel'] slack_messenger.post( "はてブのホッテントリを取得します", channel, as_user=False, ) htb_service.send_htb_hotentry(channel)
def post_folio_summary(message): """FOLIOのWebページから資産概要を取得し表示する。 Arguments: message {message} -- Slack上で取得したメッセージなど """ print('[info] listen to message. text=[{0}],'.format(message.body['text'])) channel = message.body['channel'] slack_messenger.post("FOLIOから資産概要を取得します…", channel, as_user=False, icon_emoji=':moneybag:', username='******') folio_service.send_folio_sammary(channel)
def post_dolio_detail(message, option): """FOLIOのWebページからすべてのテーマ・おまかせ投資それぞれのグラフの画像を取得し表示する。 コマンド: "folio [-g|--graph]" Arguments: message {message} -- Slack上で取得したmessage option {str} -- オプション文字列 """ print('[info] listen to message. text=[{0}],'.format(message.body['text'])) channel = message.body['channel'] slack_messenger.post("FOLIOから資産推移のグラフを取得します…", channel, as_user=False, icon_emoji=':moneybag:', username='******') folio_service.send_folio_detail(channel)
def run(): timestamp = datetime.datetime.now() print(f'[info] {timestamp} htb_daily is running.') # 投稿先チャンネル channel = '9_test' slack_messenger.post( "はてブのホッテントリを取得します", channel, as_user=False, ) # 最新の日記をSlackに投稿する htb_service.send_htb_hotentry(channel)
def send_folio_detail(channel): """FOLIO グラフ画像の通知 Arguments: channel {str} -- チャンネルID """ print('[info] called service method. name=[send_folio_detail]') # 投稿する画像をそれぞれ取得して保存する # ファイルパスを辞書型で返してもらう result = folio_repository.fetch_graph_images() if result['status'] == 'NG': post_message = '```データの取得に失敗しました```' slack_messenger.post(post_message, channel) # 画像を投稿する(テーマの資産) slack_uploader.upload_image( result['path']['theme'], channel, initial_comment='取得元: https://folio-sec.com/mypage/assets', title='transition graph about theme assets.', as_user=False, icon_emoji=':moneybag:', username='******') # 画像を投稿する(おまかせの資産) slack_uploader.upload_image( result['path']['roboad'], channel, initial_comment='取得元: https://folio-sec.com/mypage/assets/omakase', title='transition graph about roboad assets.', as_user=False, icon_emoji=':moneybag:', username='******') # アップロード完了後画像を削除する os_manager.remove_file(result['path']['theme']) os_manager.remove_file(result['path']['roboad']) print('[info] finish service method. name=[send_folio_detail]')
def upload_5_days_weather_graph(city_name, channels): """ 5日間予報のグラフ付きメッセージを取得する。 city_name: 天気データを取得する都市名 channels: 投稿するチャネルのID """ print('[info] called service method. name=[upload_5_days_weather_graph]') # OWMのAPIから天気予報JSONデータを取得する data = openweathermap.fetch_5_days_weather_data(city_name) # 取得結果チェック if cod_check(data) != '200': slack_messenger.post('```天気データが正しく取得できませんでした```', channels) return False # データを渡してグラフ画像のファイルパスをもらう img_filepath = graph_creator.create_5_days_weather_graph(data) # 画像を投稿する up_result = slack_uploader.upload_image( img_filepath, channels, initial_comment='uploaded forecast graph in {}'.format(city_name), title='5 days forecast in {}'.format(city_name)) # 結果を取得 if up_result == False: slack_messenger.post('```天気データが正しく取得できませんでした```', channels) return False # アップロード完了後画像を削除する os_manager.remove_file(img_filepath) print('[info] finish service method. name=[upload_5_days_weather_graph]') return True
def post_njpw_daily(channel, img=True): # 開始メッセージを投稿する slack_messenger.post('本日の日記を取得します…', channel, as_user=False) # 日記テキストと画像を取得 text, thumb_paths = njpw_repository.fetch_daily_data() # テキストを投稿 slack_messenger.post(f'>>> {text}', channel, as_user=False) # thumbnailを投稿(枚数分だけ) for i, thumb_path in enumerate(thumb_paths): slack_uploader.upload_image(thumb_path, channel, initial_comment=f'thumbnail {i+1}') # アップロード完了後画像を削除する for thumb_path in thumb_paths: os_manager.remove_file(thumb_path) print( f'[info] finish service method. name=[{inspect.currentframe().f_code.co_name}]' )
def post_daily_folio_notify(channel): icon_emoji = ':moneybag:' username = '******' # 開始メッセージを投稿する slack_messenger.post( "【定期】FOLIOから資産概要を取得します…", channel, as_user=False, icon_emoji=icon_emoji, username=username) # FOLIOサイトから一連のデータを取得 sammary, theme, roboad = folio_repository.fetch_daily_data() # それぞれメッセージを作成 sammary_message = make_sammary_message(sammary) theme_message = make_theme_message(theme) roboad_message = make_roboad_message(roboad) # 資産概要を投稿する slack_messenger.post( sammary_message, channel, as_user=False, icon_emoji=icon_emoji, username=username) # テーマの資産状況を投稿する slack_messenger.post( theme_message, channel, as_user=False, icon_emoji=icon_emoji, username=username) # おまかせの資産状況を投稿する slack_messenger.post( roboad_message, channel, as_user=False, icon_emoji=icon_emoji, username=username)