[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
(雛´-`).。oO(今のところ MAX 2000 ポストまでだけど Discord のテキストチャンネルのログを Discord 上の操作だけで DL できるようにした) pic.twitter.com/vd82Fw9Pqm
— しゅんしゅんひよこ (@Shunshun94) April 20, 2024
こちらにソースコードと説明。各々設置したければ設置してください式。CGI サーバがあれば動くのでゆとシートとか運用している人なら簡単に使えるんじゃないかな
他のサーバで見た「アッ、この人がうちのサーバに来たら困るなぁ」はままある。そんなときに未然に BAN しておく、なんてテクニックが使える。
コマンドプロンプトで次のようにすると対象ユーザがサーバにいようがいまいが BAN できてしまう。無論、コマンドプロンプトでなくても BAN はできるが他のツールをわざわざ導入しなくてもできるのは旨味だろう。わかる人向けに書くと curl で Discord の API を叩いているだけなので コマンドプロンプトでなくてもやれる。
curl -X PUT -H "Authorization:Bot ${BOTの Token}" -d "{}" https://discordapp.com/api/guilds/${サーバの ID}/bans/${BAN したいユーザの ID} echo 以下は実行例 curl -X PUT -H "Authorization:Bot MzAyNDU1MTg4MzQ4NzNzNzk0.WPPhWV.M4cqMTmBNIjJpg-7s1Gd9QtyRbQ" -d "{}" https://discordapp.com/api/guilds/302452071993442307/bans/258118613125300224765463
bot に適切な権限があることを実行前に確認すること。
そんなことをせずとも GUI から BAN すればいいじゃないかというコメントもあると思う。だが、GUI からは今サーバにいるメンバーしか BAN できない。だが、この方法ならば対象ユーザが入ってくる前に予防的に BAN することができる。「アッ、この人がうちのサーバに来たら困るなぁ」に対して威力を発揮するわけだ。
私は仕事で PC の画面を録画する際には Google Meets を使っていることが多い。Google Meet の適当な部屋に入り、画面共有した上でミーティングの録画を行うのである。Meet に誰かと一緒に入室しておく必要もない。これで趣味でも録画が簡単だなと思ったのだが、Google Meet の録画は有料プランじゃないとできないらしい(Google Meet ヘルプ)。
なので、趣味においてはGoogle Chrome 用スクリーンレコーダーを単純な画面録画では使用している。これだとアプリの音や音声は入らないのがネックだが操作解説などであれば十分ではある。
Windows のゲームバーが追加のアプリインストールなども要らずに最も簡単なのだと思うが、私の手元だとどうも思い通りに動いてくれない。もう少し試行錯誤してみる必要があるのかもしれない……?
思考整理のため残す。
Discord サーバの管理人が 24365 で動けるわけではない。そんな中で錯乱した人がいる場合に「管理人でなくても複数人が希望すれば特定のユーザを既定の期間タイムアウトできる」とかそんな bot があったらいいなぁと思った。複数人の合意にしないと管理人でないユーザが独断で気に食わない人を蹴り出せるのでなし。あくまで複数人。
ユーザはスラッシュコマンドでタイムアウトして欲しいユーザを申告する。誰が誰に対してタイムアウトを望んだのかは一般ユーザからは閲覧できないようにする。既定の期間内に規定の票数集まったら対象ユーザは既定の時間タイムアウトされる。期間外の投票は無視される。
データ構造は次のようになるだろうか。
サーバリスト ├サーバ │├設定 ││├既定の期間 ││├既定の票数 ││└タイムアウト時間 │└対象ユーザリスト │ ├対象ユーザ │ │├対象ユーザ ID │ │└投票リスト │ │ ├投票 │ │ │├投票した人 │ │ │└投票時刻 │ │ ├投票 │ │ │├投票した人 │ │ │└投票時刻 │ │ └以下略 │ ├対象ユーザ │ │└以下略 │ ├対象ユーザ │ │└以下略 │ └以下略 ├サーバ │└以下略 └以下略
新規の投票が発生したタイミングで既存の投票について精査し、既定の期間よりも古いものは破棄する。その上で投票を追加する。
なお、対象ユーザが対象ユーザリストにいない場合は対象ユーザを追加するところから実施する。
追加後の票数を数え、サーバの既定の票数を越えた場合はそのユーザをタイムアウトする。この際、タイムアウトが発生した旨と誰が投票したのかをサーバの管理者に DM で通知する。
タイムアウト発生後、対象ユーザの情報は bot からは抹消する。
なお、bot がユーザのタイムアウトを設定するのはドキュメントを見る限り可能そうである。
そりゃそうなるよね、って感じだけど類似のスクリプトを書くときに毎回考えるのが面倒なのでメモ。
for LINE in `ls | grep _raw.html` do staticrypt $LINE password -o ${LINE%_raw.html}.html done
これで同じディレクトリにある うんにゃん_raw.html
の全てについて暗号化されたでうんにゃん.html
が生成される。
CLI導入手順を参考に事前に入れる必要あり。古い nodejs だと動かないので新しいものを入れておく必要がある点にも注意。apt-get とかでサクッと入れたやつだと動かなかったりする。少なくとも作業した時点での Ubuntu 20.04 で apt-get でいれた nodejs だと古すぎて動かず。 n とかを使って新しいのを入れるが吉かしら。
よくわからないよぉという人は素直にウェブ上から使うといいと思う。StatiCrypt: Password protect static HTML