Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
退屈なことはDiscord.pyにやらせよう -学籍認証とかその他もろもろ
Search
あすなろわさび
April 04, 2021
Programming
0
170
退屈なことはDiscord.pyにやらせよう -学籍認証とかその他もろもろ
LTerry 1stで話した内容です。主にDiscord.pyのおはなし。
参考文献にあるはこだて未来大学のスライドには本当に助けられました。Atriaさまにはこの場を借りて御礼申し上げます。
あすなろわさび
April 04, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
上手な探索的テストとその上達方法について
matsu802
4
660
品質が高いコードって何?Rev2.1
ickx
1
490
Some Quick Ideas To Improve Your Tests ( #jassttokyo )
teyamagu
PRO
2
2.3k
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
27
19k
複雑なドメインを扱うプロダクトの探索フェーズではいつどのようにテストをするのか / How to testing during exploratory phase
boykush
2
150
Laravel標準バリデーションでできること
hmb_ok
2
360
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
4
1.1k
プロンプトエンジニアリング入門
tomokusaba
2
990
CSRF対策のやり方、そろそろアップデートしませんか / Update your knowledge of CSRF protection
hiro_y
25
15k
WinUI 3デモ - "CommunityToolkit.Mvvm"NuGetパッケージ編
andrewkeepcoding
0
140
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
170
Open Source Swiftc Workshop
kitasuke
1
290
Featured
See All Featured
How GitHub Uses GitHub to Build GitHub
holman
467
290k
Teambox: Starting and Learning
jrom
126
8.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
The Mythical Team-Month
searls
214
42k
Into the Great Unknown - MozCon
thekraken
10
830
GitHub's CSS Performance
jonrohan
1023
450k
RailsConf 2023
tenderlove
0
510
Designing the Hi-DPI Web
ddemaree
275
33k
Done Done
chrislema
178
15k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
240
1.2M
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Transcript
退屈なことはDiscord.pyにやらせよう -学籍認証とかその他もろもろ 2021/4/4 LTerry会 1st あすなろわさび
自己紹介 名前:あすなろわさび Ⅱ類情報通信プログラム所属三年次 他のLTだと旅行やプログラム分けの話とかしてた 開発経験:そんなものはない
作ったもの UEC Discord 電気通信大学・大学院学生専用Discord 授業情報とか履修相談とか ここで共有したい 他にもボイスチャットやサークル勧誘など 思いついたやつは片っ端から実装
電通大Discordについて 今までも学年ごとにDiscordサーバーはあった 授業情報は基本受け継げない 他学年間で繋がる場所がない(凸勢はいるけど) 大学生活できてねえ!!!コロナこの野郎!!!!!!!!!!!! →じゃあそういう場所作ればいっか
認証どうすんの UEC19ではTwitter人脈による手動認証 →だいたい150人、しんどいものはしんどい(お疲れ様です) →単純に4倍すると600人、新規層とか院生考えると… 流石に自動でやらな…でもどうやって…?
認証どうするの はこだて未来大学の人が既にやってた(参考文献にリンクあり) 学番を受け取って学内メールを使えばいい、入力中は他の人に見えないように こんなシステム構成にした 学籍番号 照合システム (入力検知でイベント発火)
学番:A1010111 その学番おるで 認証完了処理します
認証システム設計図 @client.event async def on_typing(): 他の人に見えないようにする 学籍暗号受け取り 番号認証、トークンを学内メールへ送信 トークン確認 認証完了処理(role付与など)
投稿全削除、他の人に見えるようにする ライブラリで殴ればどうにかなる、Discord.pyも機能豊富 on_typingは入力を検知して発火するイベント コマンド方式ならon_messageで文頭文字判定(今から作るなら絶対こっち、理由は後述)
学籍番号認証システム 学籍番号そのものはsol(学内サーバー)のディレクトリ名で容易に取得できる 照合どうする?メール送信?DB管理?作るの無理! →こういうときは素直に強い人に頼りましょう やれ はい… (ごっちさん:二年次。つよい。)
いざ稼働! 案の定バグる Discord.pyはイベント駆動 使いやすいと思って入力検知をトリガー(on_typing)にしたがコピペは検知できない コマンド方式ならほんの一瞬全体に見えちゃうけど確実に発火する 認証が詰まる:1チャンネルを一人で数分占領するのでとにかく遅い、学内メール遅すぎ Botで招待URL発行できるが
(jipさん:四年次。つよい。)
その後のお話 潔くDiscord内認証システムを停止させました →代わりにブラウザベースの招待URL発行式に変更、やることはそんなに変わらない Botは他にもいろいろ機能があるので稼働は継続 今のところある機能 ・ボイチャ専用テキストチャット機能(他の人に見えない&ボイチャ終わると消える) ・休講情報スクレイピング(三年次のBさんに外注、BeautifulSoup使ってた気がする)
・年次選択(チャンネルが多すぎるので整理用) ・にゃーん(/neko) 折角サークル勧誘チャンネルも用意したし、 ここで新歓やって飛び入り歓迎とかも面白いんじゃないでしょうか 変わった人もいます
参考文献 Discordユーザー認証botを作った話/Atriaさま https://speakerdeck.com/atria/the-discord-user-authentication-bot Pythonで実用Discord Bot(discordpy解説)/Shun Tannaiさま https://qiita.com/1ntegrale9/items/9d570ef8175cf178468f
Discord.py公式ドキュメント https://discordpy.readthedocs.io/ja/latest/index.html Pythonにおける非同期処理: asyncio逆引きリファレンス/icoxfog417さま https://qiita.com/icoxfog417/items/07cbf5110ca82629aca0