日本机戦連盟教育会ログ (2022年9月16日)

編纂者:hsjoihs

はてなブログへのバックリンク

概要

日本机戦連盟Discord サーバーで2022年9月16日に発生した会話が有用そうなので、会話を一般公開する。会話のテキスト起こしも、Discord に最初からテキストとして書かれたものも、区別せずに表示している。

文脈補足

この会話がなされた経緯としては、

というのがある。このとっ散らかり具合を体感するには、issue 一覧を見ていただくのが手っ取り早いであろう。

ということで、今回は、属人化低下の一環として、Discord bot の製作のための下調べを通して、フロントエンド・バックエンド・API・責務の分離などの重要な概念について教育していくという会が行われた。

用語補足

日本机戦連盟の Discord サーバーでなされた会話であるので、一部の用語が説明なしに用いられている。ここではそれを解説する。

会話ログ本体

hsjoihs
hsjoihs
『定例会で issue を眺めるべきリポジトリの一覧』を立てて、それに従うという手
つまり、『こういうタスクがあることを自覚しましょう』会
meloviliju
meloviliju
解決する会もやったほうがいい
hsjoihs
hsjoihs
かなり高頻度の『タスクを見る会』と、比較的低頻度の『実働会』に分離するというのがよいと思っている
タスクを見る会はコストが安く、逃してもあんま困らないので、かなり機械的にやってもいいかなと
逃してもあんま困らないことから、曜日がバラけるシステムでもいいので
meloviliju
meloviliju
3 日ごととか
hsjoihs
hsjoihs
そうしましょうか
まあそれは bot を書けばいい
今日の皆さんのご予定は
じゃあ、実働会の初回として、『bot は作れる』ということの教育を、じゃあみっとんに振ります
つまりどういうことかというと、やれと決めたので、それに基づいてなにをどう調べてどうするかを自分で考えていただく。極端に筋が悪いと私とかが判断した際に、みっとんに助言するが、それ以外はみっとんが行った判断に任せる
MIT
MIT
首が絞まりそうになるまで実装?
なにをする bot であるかを考えないといけない
hsjoihs
hsjoihs
それについては、3 日ごとにメンションを飛ばす bot であると規定します
MIT
MIT
今の話の流れ的にそれはそうじゃん。了解
hsjoihs
hsjoihs
ああ、ということで、今開催されているのが遡及的に実働会になりました
実況をして下さいね
MIT
MIT
パソコンに繋ぐので数分間お待ち下さい
hsjoihs
hsjoihs
このように、実働会の教育部門は、『ほっといてもこの人は身につけないであろうスキルだが、その実やってみるとそんなにつらくないもの』を押し付けるという方針がいいのかなと思っています
なお、この方法を他人へと押し付けるのではなく、自分へ押し付けるというのもやり方だと思っています
今日私はこれについて教育されます、と宣言して、実際にそれをやりつつ、他の人もただ実況を聞いてるだけでは虚無なので、調べて『これこういう情報見つけたけど』とかを言う、とか
SY
SY
私はサークル納期の近い作業がある
meloviliju
meloviliju
ああ、みんなでもくもくじゃないのか
hsjoihs
hsjoihs
そういう会があってもいいが、それは教育ではなく労働力供与です
もくもく会が適するのは、『手書き文書を分担して読んで、適宜質問をして』みたいな、既に皆がそれなりにできる、新規性がないが必要な作業、それこそがもくもく会に向いている
一方で、comfort zone から一歩踏み出して、『ほっといてもこの人は身につけないであろうスキルだが、その実やってみるとそんなにつらくないもの』を強要するのが、教育会ですね
SY
SY
燐字フォント製作を回せるぐらいには教育したい
meloviliju
meloviliju
だいぶやりたいが、一方で一人にやるには重い
hsjoihs
hsjoihs
画面配信がされているようだが、みっとんの声が聞こえていない
画面配信がされてますが、私は見ないので、『何をやっているか』をかなり明確に言語化し続けて下さい
私が見ると答えを言っちゃうので
言語化を強要します。これは、みっとんは普通に暗黙の前提の共有がかなり下手なので、それを改善させる目的があります
なので、私は見ないので、見ていないけれどもどういう状況なのか、がわかるぐらいの密度の実況をお願いします
実況により手を動かす速度が落ちることは想定内です。そもそも速度を優先してたら私が組んでるので
meloviliju・SY は配信を見て、言語化の足りていない場合にそれを指摘する役割で
SY
SY
明日締め切りのタスクがあるのでみっとん画面をあんま見ません
meloviliju
meloviliju
NF、調査票が受理待ち。そろそろ連絡すべきか
hsjoihs
hsjoihs
KMC でも同じイベントに出してるので、あとで KMC がどうなってるかも調べてお知らせします
みっとんから全く実況が聞こえてこないが
meloviliju
meloviliju
待たずに始めなさい
MIT
MIT
bot の戦略は 2 つ考えていて、Twitter のメンションか、Discord にするか
meloviliju
meloviliju
Discord
MIT
MIT
bot の作り方を調べます。Discord.py と書いてある
meloviliju
meloviliju
py はパイです
MIT
MIT
とりあえずそれを眺めます。まず、ライブラリと Discord の API を利用するには、などと書いている。ライブラリと Discord API が私にとって未定義語なので調べます
SY
SY
用語がリンクになってたり?
MIT
MIT
しない
meloviliju
meloviliju
人に聞くとかは?
hsjoihs
hsjoihs
全然聞くことを禁じはしない
meloviliju
meloviliju
自分ひとりで完結するわけではないよね
hsjoihs
hsjoihs
まあ絶え間なく実況されてればなんでもいいかな
meloviliju
meloviliju
ライブラリというのは、他人によって公開された便利なもので、API とは『こうするとこうなる』というものです
MIT
MIT
よく考えると、私がやりたいことにライブラリと Discord API が必要かが分からないので、読む
bot のアカウント作成法が書かれている
hsjoihs
hsjoihs
見た Web ページのリンクは毎回貼って下さい、というルールを追加します
SY
SY
API ってなんの略?
hsjoihs
hsjoihs
Application-Program Interface だけど、あんまいい名前ではない
MIT
MIT
bot ユーザーが作成されていて、他人に bot の追加を許可することができます
よくわからないけどチェックを外しておくとよいらしい
meloviliju
meloviliju
必要のないものは外すといい
MIT
MIT
トークンを教えると人にその bot が支配されるので、教えてはいけない
bot を招待する。なるほど、bot を招待することができるのか。作っただけだと入らない
bot アカウントを作りたいということが確定している人のための記事だとわかったので、別の記事を見ます
SY
SY
これが教育かぁ
meloviliju
meloviliju
胡乱そうなサイトだ
MIT
MIT
胡乱そうなのかぁ
meloviliju
meloviliju
まあ読んで下さい
MIT
MIT
サーバーはあって、bot のアカウントにせよ自分のアカウントにせよ読めば良くて、導入部分を読むか
meloviliju
meloviliju
Python がインストールされているサーバーやパソコンが有ればいい
MIT
MIT
読みます
bot の導入作業。bot を作成します。さっきと同様の話がされている。さっきと似ているなぁ
bot を起動してやらないといけないらしい。ということで bot を起動するための手順が載ってる
bot を起動。Click to reveal token を押して、トークンを人に教えるなという話がまた出てきた
your token here をトークンに置き換えるのか
謎で、Python のコードとあるが、ネットに繋いでないコードがあっても動かないはず
そもそもこれは、Discord の bot にとって Python というのがどういう存在なのかがわかっていないのが問題そう
meloviliju
meloviliju
レンタルサーバーに置いてるの?
SY
SY
一度作ったことがあるけど、私はレンタルサーバーに置いた
meloviliju
meloviliju
bot がネット上にある Python を読みに行ってそれを実行する?
hsjoihs
hsjoihs
ん?
『ん?』に留めておきます
meloviliju
meloviliju
私も調べるかぁ
hsjoihs
hsjoihs
ちょっと一つ。この教育会そのものにコンテンツ性があるので、開催されるごとにこの議事録を一般公開するというのを考えています
meloviliju
meloviliju
いいんじゃないでしょうか
SY
SY
知見が世の中に提供されるのは良いこと
meloviliju
meloviliju
読みに来る人少ないしな
hsjoihs
hsjoihs
実は、こういう手動で取った議事録をいい感じにレンダリングして表示するツールを組んだので
なにかというと、C コンパイラ班の過去ログ公開
MIT
MIT
次はなにをしようか。
まず、Discord の bot とはなにであるかを調べるか
これ違う気がするなぁ。一応読むか
一応、これの主題『bot は作れる』だから、似た機能のを探すのは最後にしておくか
hsjoihs
hsjoihs
そう、『目的を満たす bot を探して、入れる』は、問題を解決することができているので、それをやって終了、でも良いです
結局目的を果たせることが一番求められていることであり、かつ、『自分が責任持って管理しなきゃいけない部分を減らす』というのは、普通に重要なテクです
なので、適切な bot を見つけて、今回の目的を果たして、終了、でも全然良い
SY
SY
ただ、reminder bot いいの無いんだよなぁ。需要があったのでサークルで作ったんだけど、課金が必要とか、たまにバグるとか、微妙だった
細かい設定を要求したければ作るしか無いのかなぁ
meloviliju
meloviliju
どこが痒いか把握するのは結局自分でないとできないのでね
hsjoihs
hsjoihs
まさにそのとおりで、『なぜ常に汎用品を転用せず、たまにコードを書くのか?』という問いの答えは、『ニーズにぴったり合うものを探すより、ニーズに合わせるように自分で書いたほうが楽だ』という状況が往々にしてあるから
例えば cerke_online とかを考えていただくと、最初は BGEngine で『オンラインでボードを共有して、対戦したい』という需要を満たしていた
しかしながら、『初期配置は常に決まっているのに、それを毎回戻すのが面倒』『動きがどんどん確定していくにつれ、自由に動かせる、という利点がだんだん欠点になってきた』などの経緯から、自作へと移っていくことになった
自作は普通にコストが掛かって(主に私が)(私だけが)大変だったが、一方で、これを書いたことにより、
まず机戦を知らない人にとってもギリ遊べる代物が完成したことによる布教ハードルの低下
単純に、机戦をやりたいのであってそれ以外を求めていないときの利便性の上昇
机戦ならではの諸機能、役の判定や点数の計算や棋譜取りなど、がすべて自動化できること
などの、まさに『どこが痒いか把握』しているからこそ提供できる価値が提供できた
ということで、『既製品を使う』は完全に正解だけれど、それはそれで『いろんな既製品を探し、その中で目的にあうものであるかを別の Discord サーバーを立てて実験し、気に入ったものを採用する』という手間が掛かる。で、どちらの手間を取るべきかというトレードオフを意識して、意思決定をする、または、両方やる
MIT
MIT
とりあえず、あの記事を読みます
音楽を流す bot とかあったね
bot を追加すると slash コマンドが使える
SY のさっきの発言からして、既製品は向かない気がするけど眺めるか。特に有益な情報なし
Discord bot 仕組み、とかで調べればいいのかな。しかし仕組みを知りたいのか?
SY
SY
素朴な方法で調べて何通りか見ればいいのでは
MIT
MIT
といいますと?
SY
SY
文献学者の発想として、とりあえず多くの文献を乱読したほうが得られるものが多い
MIT
MIT
SY
SY
実践系の記事はよさそう
MIT
MIT
bot 確認用の鯖作成、たしかに必要だ。読んでからやるか
bot の作成、さっきもそんな話あったな
Discord.py が何者かを調べるか
調べて、知らない語を明らかにしていく
Qiita 記事を見ます
Discord.py の非公式のサーバーか
いま見なくてよさそうなので、見ません
meloviliju
meloviliju
ドットパイと読む慣習があります
MIT
MIT
Python が少しは書ける人が前提、なるほど?
Python を入れる、なるほど。あなたの bot のトークン、と書いてあるので、bot を作っていることが前提っぽい。さっき読んだ記事が役立ちそう
これはローカルで?
meloviliju
meloviliju
ローカルの CUI でやれということ
MIT
MIT
.py とは Python で書かれたファイルにつくもの?
meloviliju
meloviliju
しかし Discord.py はどうだろう。Discord.py という名前のライブラリがあって、それを呼び出すファイルを discord.py と命名する慣習がある、ということかと
.__version__ は『〜の __version__』という意味です
MIT
MIT
JS で似たのを見たなぁ
SY
SY
私が組んだときには JavaScript でした。JavaScript もあるはず。でも所感として Python の方が情報が多い
MIT
MIT
コルーチン… Python わかんないんだよな
meloviliju
meloviliju
細かいことは詰まってからやったほうがいい
MIT
MIT
コルーチン関数とは…
meloviliju
meloviliju
非同期処理というのがあって
という話をいろんなところで見てきたが、一回も使ったことがない
MIT
MIT
コルーチン関数、深く考えなくてもいいのかなという気持ちになる
Discord API から送られてきたものを…
これの一つ前の記事になんか書いてあった気がするけど
Discord API という名詞が出てきたが、Discord.py と Discord API という二つの語を関係付ける記述をさっき見た気がする
Python ラッパーというものらしい。なにもわからん
meloviliju
meloviliju
APIを叩くためのもの
MIT
MIT
APIを叩くという概念を理解していない
meloviliju
meloviliju
叩きやすくしてくれる…ドアノッカーです
SY
SY
ある部屋とある部屋…アプリケーション同士をつなぐ鍵というか、えーと
meloviliju
meloviliju
規則としてのコード
hsjoihs
hsjoihs
ちょっとこれは私が介入しようかなぁ
meloviliju
meloviliju
そのほうがいいと思う
hsjoihs
hsjoihs
API とはなにか、ですが、先程言ったとおり Application-Program Interface の略なんですが、このうち一番最後の Interface だけが重要で、残り二つは理解の妨げになります
MIT
MIT
API とはインターフェース、なにもわからん
hsjoihs
hsjoihs
インターフェースとはなにかというと、よく『界面』に喩えて訳されます
要は、二つの質的に異なるものがあって、それらが接触する領域・方法、というイメージ
meloviliju
meloviliju
Web サービスに外部から参入するための規則を定めている
hsjoihs
hsjoihs
具体例出しますか。cerke_online
MIT
MIT
一番身近だ
hsjoihs
hsjoihs
cerke_online がどういう仕組みになっているかというと、cerke_online は二つのソフトウェアからなっていて、一つを『フロントエンド』、もう一つを『バックエンド』と呼びます
MIT
MIT
ツイートで見かけるなぁ
hsjoihs
hsjoihs
フロントエンドとは、ブラウザで動く『盤面を表示し、入力を受け付ける』やつです
cerke_online のページを開くと、フロントエンドが動いて、机戦を遊ぶことができます
さて、フロントエンドは、ユーザーの入力をバックエンドに送ります
そして、それを受けてバックエンドから情報が返ってきます
なぜこのような仕組みを取っているのか?
どう思います?
MIT
MIT
とりあえず、多分よほど新しいことをしない限りはフロントエンドをいじるだけでデザインを変えられるというのがありそう
hsjoihs
hsjoihs
それは正解の一つです。ソフトウェアというものは、うまく分割することで見通しがよくなります
分割するということは、『片方がもう片方の内部状態にアクセスする手段』の個数が比較的少数のチャネルへと減少するということです
MIT
MIT
そうなんだ
hsjoihs
hsjoihs
自明ではない割にあんま説明の助けにならない気がしてきたな
よく喩えられるのは、『なぜあらゆることをやる一つの企業があるのではなく、複数の企業が互いに話し合って仕事が進むのか』
ここを詳しく述べてもあんま関係ないのでちょっとスルーしますが
meloviliju
meloviliju
結局分割による見通しの良さ
hsjoihs
hsjoihs
フロントエンドとバックエンドに分ける理由なんですが、一つ必然的な理由があります
それはなにかというと、『プレイヤー 1 が支配するコンピュータと、プレイヤー 2 が支配するコンピュータが、異なったコンピュータにある』からです
meloviliju
meloviliju
考えてなかった
MIT
MIT
分けないとどのような致命的なことが?
hsjoihs
hsjoihs
例えば、机戦には投げ棒があります。この投げ棒の値は、両プレイヤーが同じものを見る必要があります
よって、バックエンドが『プレイヤー A とプレイヤー B の試合で投げられた投げ棒の値』を管理して、それをプレイヤー A とプレイヤー B に伝えるということが必要になる
さらに言うなら、フロントエンドは『プレイヤーが支配するコンピュータ』の上で動く
ということは、プレイヤーはフロントエンドを不正に改造することができる
リモートで机戦をやるときには、素朴にやると『投げ棒の値を相手に伝える』という作業が個人の良心に依存する
中間者がいない場合、投げ棒の確率をいじって伝えるイカサマが可能になる
投げる様を配信させることで解決できるように一見思えるが、予め録画してある偽の動画を流すという手段がある
これも含め、情報系の話をやるときには、最大の悪意を持っても壊せないように作る必要がある
meloviliju
meloviliju
ゼロトラストの例?
hsjoihs
hsjoihs
これをゼロトラストとは呼ばない。ゼロトラストは、普通『プレイヤーもバックエンドを信用しなくていい』の意味で使う
さて、ということで、フロントエンドとバックエンドに分割することによって、バックエンドが状態を中央集権的に管理して、プレイヤー側のコンピュータで動くフロントエンドがイカサマをできないようにする、という役割があることが分かった
cerke_online の場合は、『バックエンドがただ一人存在して、そこに向けて情報が送られるので、それを精査して結論を下す』という、中央集権的主体としてバックエンドがある
Discord の場合も似たようなことになっていて、Discord 社が管理するコンピュータが、皆さんのパソコンに入ってるアプリから飛んでくる情報を精査して、結論を下して、Discord 社が管理するコンピュータの状態が書き換わって、それを皆さんのパソコンに入ってるアプリが読むことによって、会話が成立する
Discord API というのはなにかというと、この『皆さんのパソコンに入ってるアプリ』(フロントエンド)が『Discord 社が管理するコンピュータ』(バックエンド)と会話するときのコミュニケーション手段であって、バックエンドは、同じ言葉を喋ってくれれば如何なるソフトがそれを話したとしても、それを平等に精査して結論を下す
なので、Discord アプリが話す言葉と同じ言葉を話せば良い
Discord 社は、『メッセージを送るには、こういうことをして下さい』という仕様書を一部公開している
それに従ってさえいれば、今私が文字を打ち込んでEnterを押してメッセージを送っているのと同様に、そうでない手段でもメッセージを書き込める
なので、APIを叩くというのは、その仕様書に従って、何らかのインタラクションをして、Discord 社の管理してるコンピュータの内部状態を適正に書き換える、という意味
bot というのは、人間がアプリをいじるというのではない手段により、人間がアプリをいじるのと同等のインタラクションを Discord 社に飛ばすようなプログラム
Discord.py というのは、その API を叩くための適正なインタラクションを、楽に行えるようにする手段
さっきラッパーという言葉が出てきた
これはどういうことかというと、例えば cerke_online は、実はプレイヤーが直に API を叩くことによってもバックエンドの状態を変化させることができるが、それはあまりに面倒なので、GUI を操作することで手を記述して、それをバックエンドへと送信することができる
このことを、『GUI ラッパー』と呼ぶことがある
GUI によって、『API を叩く』という七面倒臭い作業を、やりやすくしてくれる
Python ラッパーというのは、Python のコードを書くことで『API を叩く』という七面倒臭い作業をやってくれる存在
cerke_online の API を叩くとは実際どういうことか
MIT
MIT
Discord 社は『この言語でこうやればいい』と公開しているが、それは面倒なので、有名言語でそれを代行するツールがラッパーという名前で広まっている?
hsjoihs
hsjoihs
実際の面倒を見せたほうがいいので、実例を持ってきます
fetch(`https://little-water-8645.fly.dev/decision/infafterstep/`, {
    method: "POST",
    body: '{"type":"InfAfterStep","step":["I","L"],"plannedDirection":["U","L"],"src":["E","L"]}'
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${sessionStorage.session_token}`,
    },
  })
これを実行することで、『LE から LI を踏んで LU へ行け』という言葉がバックエンドに伝わります
MIT
MIT
毎回これ書くのヤダなぁ
hsjoihs
hsjoihs
ここに書いてある sessionStorage.session_token というのが、要はトークンで、まあ要は『この合言葉を知っている者が送ってますよ』の証であり、これが盗まれると全部乗っ取られる。このプレイヤーになりすまして任意の(バックエンドが受理することのできる)操作をできる
MIT
MIT
cerke_online だと対戦を横取りされるだけで済むが、一般には困るなぁ
hsjoihs
hsjoihs
ラッパーは、面倒を避けるだけではなくて、API の仕様が変わったときにそれを『吸収する』、気付かれないようにする、という役割もあります
具体的には、先月末にバックエンドを heroku から fly.io に変えました
これはどういう意味かと言うと、中央集権的な処理をやるというタスクを私は他人のコンピュータへと委託してたけれど、その委託先を変えたという意味
しかしながら、誰も API を直に叩いておらず、すべてのプレイヤーが GUI ラッパーを経由して API を叩いていたので、この差異は全く気づかれていない
逆にいうと、API が同じであれば、ソフトウェアの中身がごっそりすり替わってても迷惑をかけない
MIT
MIT
バックエンドが変わったら API も変わりませんか
hsjoihs
hsjoihs
逆で、バックエンドの内部構造を返る際に、API だけはその変更の前と後で同じであるように努力する
MIT
MIT
なるほど?
hsjoihs
hsjoihs
例え話をしまーす
人をどれだけ首にして、どれだけ机やらパソコンやらの配置を変えたとしても、依頼Aに対して返答Bを返すという機能さえ一致していれば、内部構造が変わった頃はバレない
数学屋にだけ伝わるような言い方をすると、『写像はどのような入力をどのような出力によって送るか(あと domain と codomain)によってのみ特徴づけられる』
MIT
MIT
heroku とか fly.io は写像の名前ではないということか
hsjoihs
hsjoihs
はい、委託場所の名前、代行業者の名前。代行業者を変えたら、当然別の住所に住んでいるので、別のアドレスへと API を投げなきゃいけなくなる
なので、委託先を変えるという今回の決断は、『API の破壊的変更』です。今までやっていたのと全く同じ方法では期待した動作が返ってこなくなるので
しかしながら、この破壊的変更を最小限に留める(つまり、URL だけが異なる)ようにできたので、フロントエンドの変更は一行で済んだ
これが、住所すら変わっていなかったら、フロントエンドはゼロ行の変更で済んだが、今回『heroku 無料プラン廃止』というどうしようもない地上げが来たので、オフィスを移転した、ということ
MIT
MIT
『フロントエンドとバックエンドの合成写像』の変更がなければ、ユーザーは変化に気づかない
hsjoihs
hsjoihs
そのとおりで、そのことをこっちの業界では『ラッパーが、API に起きた変化を吸収する』と表現します。数学屋さんには時間軸がないけど、こっちには常に変更前と後があるので
MIT
MIT
「分割するということは、『片方がもう片方の内部状態にアクセスする手段』の個数が比較的少数のチャネルへと減少するということです」という話、「あるパラメータ(?)を直接弄る権限をもつものが減る」の義?
hsjoihs
hsjoihs
その表現により十分よく近似される
MIT
MIT
実況に戻るかぁ
meloviliju
meloviliju
bot に戻ろう
MIT
MIT
Discord.py を使うと、Python を書いて Discord API を操作できることになる
私はどの言語も知らないので、一番情報の多い Python をダウンロードしようかな
hsjoihs
hsjoihs
まあ Python でいいんじゃないですか
meloviliju
meloviliju
Python ってなに入れればいいんだ?
hsjoihs
hsjoihs
まあそこら辺を追っていきましょう
meloviliju
meloviliju
WSL で入れるのが一番ラクではあるけど
MIT
MIT
それはなんですか?
meloviliju
meloviliju
Linux の環境が Windows で使えるようになる
hsjoihs
hsjoihs
まあ、最初のうちは Windows 用のチュートリアルで困ることもないだろうし
meloviliju
meloviliju
私は 3.7 と 3.9 でコケた。とはいえ、しんどくなってから使えばいい
MIT
MIT
とりあえずインストーラをダウンロードしました
あまりにもこの分野の知識がないので、雑な権威主義をかましてここの記述に従っていく
meloviliju
meloviliju
>>> がある状態で exit() と打つと Python が終わるはず
Use exit() or Ctrl-Z plus Return to exit
MIT
MIT
2+2 を打ったら 4 が出ました
quit() で終了できるらしい
meloviliju
meloviliju
quit() でも exit() でもいいのか
コマンドラインというのは、コマンドプロンプトの入力行
MIT
MIT
もしかして、この pip で Discord.py も
meloviliju
meloviliju
そうです
MIT
MIT
hsjoihs
hsjoihs
4 年前の記事です。Discord はかなり変化が激しいので、あまり役立たない可能性があります
MIT
MIT
Math StackExchange しか見てないので質問時期を確認するという習慣がなかった
SY
SY
Discord 変化激しくて困りますよね。私が組んだときも発生した
MIT
MIT
meloviliju
meloviliju
これは関係ないですね
今の入力は Python ですか?
MIT
MIT
>>> です
meloviliju
meloviliju
じゃあ Ctrl + Z を押して、pip と打って下さい
MIT
MIT
なんかめっちゃ出た
meloviliju
meloviliju
じゃあできてますね
python -m pip install discord
MIT
MIT
discord と discord.py が両方ある
meloviliju
meloviliju
へー。discord.py を入れたら bot 作りに戻れます
MIT
MIT
Discord API を使うためにアカウントを作る必要がある、たしかに
wild bot というのは Discord の単語チョイス?
meloviliju
meloviliju
そうです
MIT
MIT
コピーボタン、どれ?
コピーする値が 0 なんですよね
permission ってなに?英語が分からん
SY
SY
認可?
meloviliju
meloviliju
bot に与える権限
SY
SY
チェックすると、それができるような、いい感じの値が下に吐かれます
meloviliju
meloviliju
あ、そういうことなの
SY
SY
それを押して下を見ると値が変わっている
hsjoihs
hsjoihs
2048 とかが出ていることから分かるように、権限のあるなしを 2 進数の桁に対応させてます
MIT
MIT
まあそれが一番簡単ですからねぇ
メンションを飛ばすかどうかの権限がありそう
SY
SY
administrator 権限
meloviliju
meloviliju
乗っ取られたら全てが終わるんよ
MIT
MIT
まあ mention everyone もつけておくか
meloviliju
meloviliju
mention の仕方、めんどくさかったはず
SY
SY
メンションに値がついてたはず
hsjoihs
hsjoihs
とりあえず実験してみて、上手くいかなかったら手法を変えてもう一回すればよいわけです。わりとこの業界は『案ずるより産むが易し』で全てが回ってます
MIT
MIT
自分で考えないと結果が返ってこない分野に慣れきっているのでその発想が出てこなかった
meloviliju
meloviliju
せっかくだから私も作るか
Powered by PseudoRoku, which is designed by hsjoihs. Feel free to report any issues.