匿名チャット(Discord)
旧アイコン
Discord.iconDiscordにbotを使って他に無い(多分)サーバーを作った。
async版で作ってあるのと、運用中に色々更新項目が増えたので更新したい。
(いつになったら時間が出来るやら)
詳細
github
新アイコン
https://cdn.discordapp.com/icons/554304652007440395/d9bdb968e81fc87652e3c45bf78e14b7.png
更新しました。現在は一応ベータテストという立ち位置でやっています。
主な更新内容は、
①利便性の向上
② 基礎部分のモジュール化
③匿名性の向上
④レイテンシの向上
の3つです。
以下走り書き 後で書き直します
有効なメンションがdiscordのクライアントによってレンダリングされるようにこの匿名チャットにおけるIDメンション及びメッセージアンカーがハッキリと見えるようになりました。@と>>を絵文字に変換する事で他のメッセージと差別化されます。
この絵文字は通常のメッセージにおいて使用されないためにカスタム絵文字の利用制限を活用しました。apiには存在するものの未だどのクライアントでも操作可能でない機能ですが、大変有効な機能だと実感しました。
Botのdiscordにおける各種制限に対する優位性を利用し役職を設定出来ないwebhookにおいてもこの絵文字に対する利用制限を突破できます。
discordの大抵のBotは既存のサーバーに入れて機能を拡張する用途であると思いますが、新バージョンではBot自体がサーバーを作成して拡張済みのサーバーを提供するという方式です。
discord.pyの諸々をそのまま利用し、その上に殻を乗っける形で作ってあります。(こういうのをなんて表現するのかがわからない)
以前のバージョンでは一人一人に対して役職を割り当てることで個人宛メンションの代用としていました。
しかし検証の結果、なんの権限を持たなくともサーバー上の全役職の情報、つまりは誰に何の役職が付与されているかを知る事が可能であると判明。そこで利便性のために役職の生成自体は残しつつもそれを割り当てない方式に変更しました。それに従い、メンションをその相手のチャンネルのメッセージでのみ展開するように変更。管理のため、全チャンネルの閲覧権がある管理者の視点でメンションが増大する問題も解決しました。
250の役職数制限の為に役職を生成しないという選択肢も出来るようにしました。
以前のバージョンではurllibを使用していたためにブロッキング処理であり、遅延の原因となっていました。そこをaiohttpに変更して速度向上を試みました。現在はaiohttp.requestを利用していますが、discord.pyのclientが持つaiohttpのclientオブジェクトを利用した方が早いのか要検証項目です。
依然残っている問題点としましては、添付ファイルが使用不可になってしまう事です。
一度でもファイルへgetリクエストが飛べば生存時間が伸びるのでは無いかという以前からの予想を検証したいところ。
基礎モジュールにどこまで含むべきか悩むところではありましたが、サーバーの生成メンバーの管理、チャットの転送タスクを行うところまでとし、このモジュールを使い実用に耐える要素を詰めたtemplateを同時に公開する事としました。
deploy to herokuボタンも今回初めて利用し、ホスティングが楽になるよう工夫しました。