Skip to content

tamakoma1129/DiscordBotAtcoder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

DiscordBotAtCoder

このレポジトリの説明・目的

過去に、Discordの簡易的なBotを作りましたので、成果物として残しています。
Botの内容は、登録したDiscordサーバーに次のAtCoderのコンテスト情報と登録したユーザーのAC数を定期的に報告するというものです。
誰でも使えるように改善したコードにしたつもりですが、至らぬ点があるかもしれません。

使用環境

  • windows10
  • Python 3.9.8
  • requests 2.28.2
  • beautifulsoup4 4.11.2
  • discord.py 2.1.1

詳細と初期設定

仕組み上、DiscordBotのTokenや発言させたいチャンネルIDを自分でコードに入力する必要があります。
また、フォルダの参照場所を絶対参照で指定している為、パスを自分の環境に応じたパスに指定する必要があります。
以上のことから、Pythonのコードを編集できる環境が必要です。

ここから先はその方法と詳細を説明しています。
まず、get_info.py,pro_info.py,discordbot.pyをエディタか何かで開き、編集できる状態にしてください。

次に、bot_file内に空のinfo_saveファイルを作成してください。

get_info.py

  • get_info.pyではAtCoderのホームページからコンテスト情報が入ったhtmlを取得し、指定した場所にhtmlを保存するという動作をしています。
  • パス変数を自分の環境に合わせ変更してください。

pro_info.py

  • pro_info.pyではAtCoderAPIから対象ユーザーの現在時刻から過去1日分のAC数を取得しています。 その為、起動しない日があるとその日のAC数はカウントされません。
  • また、初回起動時は問題提出数が500を超えたユーザーの正確な初回ACカウントができません。 ユーザーネームは途中で追加しても問題ないですが、こちらも問題提出数が500を超えていると初回ACカウントが上手くできません。
  • パス変数を自分の環境に合わせ変更してください。

discordbot.py

  • 自分のDiscordBotのアクセストークンとチャンネルIDに変更してください。
  • パス変数を自分の環境に合わせ変更してください。

info_save

  • htmlや加工したデータを保存するフォルダです。

使い方

初期設定が完了したら
get_info.py→pro_info.py→bot_start.bat
の順に手動で起動してください。

わざわざget_info等を手動で起動させる理由はスクレイピングが暴走しサイトに負担をかけないようにする為です。
また、手動更新の為、コンテスト情報が更新される度にget_infoは手動で起動する必要があります。

改善したい点

  • 24時間起動してないとダメで、コンテスト情報が更新される度get_infoを起動する必要があるところ。
  • 初回起動時に累計提出数が500を超えていると正常に累計AC数がカウントされないこと。
  • 相対パスで参照できないところ。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published