{"id":47287842,"url":"https://github.com/sakots/botdesu","last_synced_at":"2026-03-16T06:21:49.223Z","repository":{"id":55650787,"uuid":"315773923","full_name":"sakots/botdesu","owner":"sakots","description":"mastodon bot","archived":false,"fork":false,"pushed_at":"2022-12-27T04:44:28.000Z","size":404,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-13T00:30:05.369Z","etag":null,"topics":["bot","mastodon","mecab","python"],"latest_commit_sha":null,"homepage":"https://sakots.red/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sakots.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-24T23:06:35.000Z","updated_at":"2024-05-31T01:43:42.000Z","dependencies_parsed_at":"2023-01-31T02:31:21.691Z","dependency_job_id":null,"html_url":"https://github.com/sakots/botdesu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sakots/botdesu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakots%2Fbotdesu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakots%2Fbotdesu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakots%2Fbotdesu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakots%2Fbotdesu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sakots","download_url":"https://codeload.github.com/sakots/botdesu/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sakots%2Fbotdesu/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30570628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-16T06:02:37.763Z","status":"ssl_error","status_checked_at":"2026-03-16T06:02:14.913Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","mastodon","mecab","python"],"created_at":"2026-03-16T06:21:46.007Z","updated_at":"2026-03-16T06:21:49.209Z","avatar_url":"https://github.com/sakots.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ボットデスくん\n\n![私がボットデス](https://github.com/sakots/botdesu/blob/main/ico.png?raw=true)\n\nポケモンマストドン「[ポケマス](https://pokemon.mastportal.info/)」のさらに一部界隈で有名な、pythonで動くマストドンのマルコフ連鎖botです。\n\nあとなんか画像を検索したりする。\n\n## 概要\n\nおれはしゅうまい君が作りたかったんだよ…\n\n## 新機能「画像検索して貼る」\n\nボットデスくんにメンション飛ばして「○○の画像くれ」とか「△△の絵ちょうだい」とか言ってみよう。たぶんエロいのは持ってこないと思うけど。\n\n## 名言\n\n- 「ねぇやだスプラやめる！？！！」\n- 「おは花粉症っぷ？」\n- 「キャンドゥーのドレッシング？キャンドゥーのは無理あるじゃろう？おれとしては」\n- 「タオルとマステ買ったのにいつも足りない」\n- 「今日はエンニュートだ！！！！！！」\n- 「大船渡線だよあ」\n- 「アブソルアイコンの動画見てるだけか？」\n- 「それちんこですよ」\n\nなど\n\n## ここがすごいぞボットデス\n\nエラーで止まっても自分でそれを把握して勝手に再起動する\n\n- ホストドン側でエラーが出ることが多いので導入しました\n\n画像検索で結構違う結果を持ってくる\n\n- いや、いっぱい拾ってランダムで上げてるだけなんですけどね\n\n## 使い方（下準備）\n\n- python3\n  - まあpythonで動きますし。3.8.5で動いてるけどたぶん3.9.1でも動く。\n- MeCab\n  - インストール必須。[mecab-ipadic-NEologd](https://qiita.com/ekzemplaro/items/c98c7f6698f130b55d53)あたりの辞書を用意すると良いです。\n- botをユーザー登録するためのマストドンアカウント\n  - そりゃ必要ですわな。その後アカウント→開発から mastodon-api の `client_id` `access_token` `client_secret` あたりがないと動かないですよ。\n- configファイルの設定\n  - マストドンでbotを動かすための設定を書くファイルです。プログラム内に直接書くのは気がひけるので分けました。\n  - config_sample.pyからconfig.pyにコピー＆リネームして使ってください。\n  - .envはめんどいのでやめました。\n\n## 使い方（Python編）\n\n- 以下をpythonで使えるようにpip3とか使ってなんとかする。\n  - mecab-python3\n  - Mastodon.py\n  - requests\n  - requests_oauthlib\n  - beautifulsoup4\n  - apscheduler\n\nまあこんな感じ（コピペ用）\n\n```shell:terminal\n  pip3 install mecab-python3 Mastodon.py requests requests_oauthlib beautifulsoup4 apscheduler\n```\n\n- 他なにか足りなければ動かしたときに「おいこれがねえぞ」ってエラーが出るのでそれ見て適宜導入してください。\n\n## さあ動かすぞ\n\n基本的にubuntuのpython3.8で動かしてますのでそれ以外の環境はわかりませんが\n\n```shell:terminal\n  bash run\n```\n\n以上。\n\n## インストール時につまづく点\n\n### 辞書定義ファイルの場所がなぜかへんなところを指定される（21/05/12追記）\n\n何が悪いのかわかりません。コレに関しては、指定された場所へmecabrcファイルをコピーするしかない。\n[mecab-ipadic-NEologd](https://qiita.com/ekzemplaro/items/c98c7f6698f130b55d53) のページにも書いてありました。\n\n## 気になる点\n\n- やっぱなんかソースきれいではない\n- 422エラーが返ってきたときにどうすればいいのかまだわからん\n- きりぼっとが超参考になった\n\n## 更新履歴\n\n### [2022/12/27] v0.15.0\n\n- 画像を探せるようにした。\n\n### [2021/12/12] v0.14.11\n\n- 誰が画像検索したのかメンション飛ばすようにした。\n\n### [2020/12/28] v0.14.10\n\n- 画像拾ってこれても「検索しすぎて怒られた」とか言うバグ修正。\n\n### [2020/12/27] v0.14.9\n\n- 検索しすぎて怒られても検索するバグを修正。\n\n### [2020/12/27] v0.14.8\n\n- 構文間違ってたかも\n\n### [2020/12/26] v0.14.7\n\n- ムラッけがバグっていたので修正。\n\n### [2020/12/26] v0.14.6\n\n- ボットデスくんの画像検索機能にムラッけ追加。\n\n### [2020/12/23] v0.14.5\n\n- 不適切画像フィルタ強化。\n- ついでに画像が見つからなかったときの処理追加。\n\n### [2020/12/20] v0.14.4\n\n- 変数がおかしかった\n\n### [2020/12/20] v0.14.3\n\n- どうにもできないので力業を行使\n  - toot.txtがおかしくなったら削除するという暴挙。\n\n### [2020/12/20] v0.14.2\n\n- toot.txtがちょっとおかしくても何とか動くように修正\n\n### [2020/12/19] v0.14.1\n\n- 画像検索する前に検索しすぎてたら検索しないようにした\n\n### [2020/12/19] v0.14.0\n\n- APIエラー処理で発言できなかったときにの再起動をmain.pyの中に納めた\n  - ので botdesu.sh廃止。\n\n### [2020/12/18] v0.13.20\n\n- イライラ度計算でエラーが出ることがあるの修正\n\n### [2020/12/18] v0.13.19\n\n- トゥートしなくなっていたバグを修正\n\n### [2020/12/17] v0.13.18\n\n- 今度は上がりすぎたので調整\n\n### [2020/12/17] v0.13.17\n\n- イライラ度が上がらなさすぎるので調整\n\n### [2020/12/17] v0.13.16\n\n- イライラ度が100%を超えても黙ってるので修正\n\n### [2020/12/17] v0.13.15\n\n- 画像検索でエラーが出たときも返事をしてくれるように改良\n- 発言間隔調整\n\n### [2020/12/17] v0.13.14\n\n- 発言間隔調整\n\n### [2020/12/17] v0.13.13\n\n- 拾ってきた画像全部貼り付けようとして怒られていたので修正\n\n### [2020/12/17] v0.13.12\n\n- 画像トゥートできないのが直った気がする\n\n### [2020/12/17] v0.13.11\n\n- そうかglobal変数は外部から変更できないのか\n\n### [2020/12/17] v0.13.10\n\n- いやわからんわ\n\n### [2020/12/17] v0.13.9\n\n- わかったぞ！わかったぞ！わかっ…\n\n### [2020/12/17] v0.13.8\n\n- イライラ定義をconfigから戻した\n\n### [2020/12/17] v0.13.7\n\n- 変数の読み込み方を知らなかった。\n\n### [2020/12/17] v0.13.6\n\n- なんか怒られるので修正\n\n### [2020/12/17] v0.13.5\n\n- イライラ定義をconfigに移した\n\n### [2020/12/16] v0.13.4\n\n- なんか画像がダウンロードできないのを修正したい\n\n### [2020/12/16] v0.13.3\n\n- 発言拾いすぎなのでタイミング調整\n- yahooが怒るのでヘッダを偽装\n\n### [2020/12/16] v0.13.2\n\n- なんでVSCodeくんエラー出してくれんのやろ。\n\n### [2020/12/16] v0.13.1\n\n- 未定義の変数使ってたので修正。なんでVSCodeくんエラー出してくれんのやろ。\n\n### [2020/12/16] v0.13.0\n\n- 画像のクロールの方法を変えた。\n- googleからyahooに変えた。\n- イライラ度管理を見つめ直した。\n\n### [2020/12/15] v0.12.6\n\n- ちょっとわかる\n\n### [2020/12/15] v0.12.5\n\n- いや、わからん\n\n### [2020/12/15] v0.12.4\n\n- 誤字っていた\n\n### [2020/12/15] v0.12.3\n\n- 変数超わかんない。\n\n### [2020/12/15] v0.12.2\n\n- なんか動かない気がしてきたけど頑張る\n\n### [2020/12/15] v0.12.1\n\nシェルスクリプトをミスっていた\n\n### [2020/12/15] v0.12.0\n\n- けっこうすごく作り直した。\n\n### [2020/12/15] v0.11.12\n\n- 止まるって言うか動いてない気がしたので_resをバックグラウンドで実行するようにしてみた。\n- 起動中のメッセージの変更\n\n### [2020/12/15] v0.11.11\n\n- なんか止まるのでファイルを分けた\n\n### [2020/12/15] v0.11.10\n\n- ディレクトリ名が間違っていた\n\n### [2020/12/15] v0.11.9\n\n- ファイルを消すタイミングを間違えていたの修正\n\n### [2020/12/15] v0.11.8\n\n- 参考にしていた正規表現のサイトが間違っていた。なんてこった。\n\n### [2020/12/15] v0.11.7\n\n- バグなおれよ！！！\n\n### [2020/12/15] v0.11.6\n\n- 私はアホでした\n\n### [2020/12/15] v0.11.5\n\n- おれは正規表現がわかっていなかった。\n\n### [2020/12/14] v0.11.4\n\n- 二次元配列がわかった気がする。\n\n### [2020/12/14] v0.11.3\n\n- がんばった。\n- あと改行コードを変えた\n\n### [2020/12/14] v0.11.2\n\n- 検索もバグってた\n\n### [2020/12/14] v0.11.1\n\n- 配列がバグってた\n\n### [2020/12/14] v0.11.0\n\n- 画像検索機能をつけてみた。\n\n### [2020/12/14] v0.9.26\n\n- ファイルは作成されてたんや… 空っぽの時の例外処理がなかったんや…\n- なので分離して追加\n\n### [2020/12/14] v0.9.25\n\n- やっぱりファイルが作成されないので手法を変えた\n\n### [2020/12/14] v0.9.24\n\n- なんでか動かないと思ってたら変数がかぶってたので修正\n\n### [2020/12/14] v0.9.23\n\n- 初回起動時にtoot.txtがないとエラーが出るので修正\n- トゥートできなかったときにイライラ度が減ることもあるように修正\n- readme整理\n\n### [2020/12/13] v0.9.22\n\n- なんか計算をミスってたので修正\n\n### [2020/12/13] v0.9.21\n\n- ボットデスくんのイライラ度をコンソール見たらわかるようにした\n- コード整理\n\n### [2020/12/12] v0.9.20\n\n- bashわからんすぎるのでpythonをがんばるほうにもどした\n\n### [2020/12/12] v0.10.2\n\n- bashまじでわからん\n\n### [2020/12/12] v0.10.1\n\n- bashわからん\n\n### [2020/12/12] v0.10.0\n\n- 思ったように動かないのでファイルを分割してみた\n\n### [2020/12/12] v0.9.18\n\n- 変数が未定義で怒られて止まるので修正\n- コンソールにデバック用のいろいろが見えるようにした\n\n### [2020/12/12] v0.9.17\n\n- やっぱり喋らないのでよく見たら変数が変数しすぎてた\n\n### [2020/12/12] v0.9.16\n\n- おいこいつちっとも喋らねえぞの修正\n\n### [2020/12/12] v0.9.15\n\n- scheduleなんていらんかったんや！\n\n### [2020/12/12] v0.9.14\n\n- 発言頻度が高すぎてびびったので修正\n\n### [2020/12/12] v0.9.13\n\n- 不機嫌にした\n\n### [2020/12/07] v0.9.12\n\n- 再起動時に発言するようにした\n\n### [2020/12/07] v0.9.11\n\n- ソースの不要な部分を削除\n\n### [2020/12/07] v0.9.10\n\n- タイミングをミスっていたので修正\n\n### [2020/12/07] v0.9.9\n\n- テキスト全消しのタイミング調整\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakots%2Fbotdesu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsakots%2Fbotdesu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsakots%2Fbotdesu/lists"}