DiscordのニュースBotを改修しまくる
毎週日曜日の記事更新。今回は例のニュースBot改修のお話。
やはり未熟。いろいろな面で対応が出来ていなかった!
先日作成していました、Discordのニュース通知Bot。
「ゲームの無料配布」を逃さないように、
その記事をピックアップして、Discordに通知するというもの。
このBot自体は、記事にしていますのでそちらを参照してください。
取得ニュースサイトの追加
作成したときは、AUTOMATONさんのみの取得でした。
ただ、1つだけだと割と見逃す可能性があったので、
次に海外ゲームにつよつよなGame*Sparkさんを加えることに。
ただ、RSSフィードが動いていない?
そう思って問い合わせしたらすぐに直してくれた。
ありがとうございます….
んで、その後ついでに4Gamerさんも追加。
#各ゲームサイトの名前
site_name_list = []
site_name_list.append('AUTOMATON')
site_name_list.append('GameSpark')
site_name_list.append('4Gamer')
#RSSフィードのURL
rss_url_list = []
rss_url_list.append('https://automaton-media.com/feed/') #AUTOMATONのRSS-URL
rss_url_list.append('https://www.gamespark.jp/rss/index.rdf') #GameSparkのRSS-URL
rss_url_list.append('https://www.4gamer.net/rss/index.xml') #4GamerのRSS-URL
#各ログのファイルパス
log_path_list = []
log_path_list.append('D:/discord_bot/data/log_am.txt') #AUTOMATONのlogファイルパス
log_path_list.append('D:/discord_bot/data/log_gs.txt') #GameSparkのlogファイルパス
log_path_list.append('D:/discord_bot/data/log_4g.txt') #4Gamerのlogファイルパス
追加するために、今後もしかしたら増えるかもなんて思って、配列に。
動作時は、取得などの一連動作をforeachでサイト分動作させる。
この課題は、「各別サイトで同ゲームの記事があがる」点。
下手したら3回も同じ意味の記事が流れる。
でもそれを排除するには、ちょっと考えないといけないので、
それは後々ってことで今は我慢。
サイト不具合の対処
最近AUTOMATONさん側でサーバー不安定かなにかで動作しなかった。
一度クッション挟む対処をされていたので、
RSSの取得でもそのページが来る。それをアプリ側では取得してさばく。
その場合、あるべき配列がないため、それでIndexErrorが出ます。
んで、チャット送信まで出来るダンマリ。
なので、頑張って急いで修正。
例外処理を追加。
本来あるべき配列がエラーだったらその処理を飛ばす。
#最新のニュースURLに置き換える
try:
with open(log_path, mode='w') as f:
f.write(d.entries[0].link)
except IndexError:
print('正常にニュースを取得できませんでした。')
print('次のサイトのRSSフィード等を再度確認してください: '+ site_name)
今回ので、例外処理って大切だと強く思ったのです。
この前、ラズパイを買ったのでそのうちこのBotをラズパイに移したい。
んでもって、24時間稼働できるようにしたい。
ニュースは別に一日2回だけど、それ以外のBotとか作ってみたいし….