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
220
退屈なことはDiscord.pyにやらせよう -学籍認証とかその他もろもろ
LTerry 1stで話した内容です。主にDiscord.pyのおはなし。
参考文献にあるはこだて未来大学のスライドには本当に助けられました。Atriaさまにはこの場を借りて御礼申し上げます。
あすなろわさび
April 04, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
250
『リコリス・リコイル』に学ぶ!! 〜キャリア戦略における計画的偶発性理論と変わる勇気の重要性〜
wanko_it
1
340
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
690
令和最新版手のひらコンピュータ
koba789
13
6.9k
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
950
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
1.7k
Vibe coding コードレビュー
kinopeee
0
420
What's new in Adaptive Android development
fornewid
0
140
iOS開発スターターキットの作り方
akidon0000
0
240
QA x AIエコシステム段階構築作戦
osu
0
250
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
690
AI Ramen Fight
yusukebe
0
130
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Visualization
eitanlees
146
16k
The Straight Up "How To Draw Better" Workshop
denniskardys
235
140k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
880
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Become a Pro
speakerdeck
PRO
29
5.5k
Building Adaptive Systems
keathley
43
2.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
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