AI搭載多機能DiscordBot「Swiftly」
初めに
このbotは2025/03/02現在30サーバーのユーザー様に利用されています。
今回は、そのbotの概要と、仕組み、そして今後についてです。
Swiftlyとは
- サーバー解析のAI搭載
- 荒らし対策機能搭載
- 管理者権限などを標準で必要としない
- サーバー掲示板がある
- MIT Licenseでオープンソース。デプロイはGitHubから自動化
その他にも多数の機能があります。
なぜ作ろうと思ったか
理由は単純。
「DiscordBotおもろ!とにかく多機能なDiscordBot作ったらおもろいんじゃね!?」
仕組み
Swiftlyは以下の技術スタックを採用しています。
技術スタック
- 言語: Python
- データベース: SQLite3
- AI解析: ARIMA,Prophetなど
- デプロイ: GitHub Actions
- ホスティング: 自宅サーバー(ProxmoxVE + Ubuntu Server)
動作フロー
これは例ですが
- イベント受信: DiscordのGatewayを通じてイベントを受信
- 処理: AI解析、権限チェック、適切なアクション実行
- レスポンス: 必要に応じてメッセージ送信、ログ記録
困ったこと
規模が大きくなるにつれて負荷などが増え、レートリミットやシャードがブロックされるなどの問題が次々と発生しました。
コントリビューターの方などの貢献で日々軽量化や高速化を行っています。
認証について
現在は100サーバーを超えていませんが、信頼と安心のために、認証済みbotになっています。
デプロイと再起動
やはり、デプロイして変更を適用するには、再起動は必須になってしまいます。
しかし、SwiftlyにはVC読み上げ機能を実装しているため、再起動を行うとVCから切断されてしまいます。この問題を少しでも改善するため、Swiftlyではこのように問題を改善しました。
まず、Swiftly以下のようなファイル構成になっています。
bot.pyにはbotの基本的な起動プログラムなどが書き込まれており、cogsというフォルダ内には機能別に分かれたプログラムのファイルが入っています。
デプロイ時に、再起動を避けるには変更があった機能のみをリロードする必要がありました。
まさかのSwiftlyは開発開始時から機能別にプログラムが分かれていたため、実装が容易でした。
デプロイはこのようなワークフローで行われます。
- 仮想環境をアクティベート
- 依存関係をインストール
-
git pull
を実行し、プログラムをpull - 変更されたプログラムを確認
- cogsフォルダ内のみが変更されていたらそのプログラムのみをreload
- それ以外ならサービス自体を再起動
Swiftlyはこのようにして再起動を極限まで減らしています。
Swiftlyにはどんな機能がある?
- 現在のサーバーの人数と成長率からの未来予測
- プログラマーのための便利なユーティリティ機能
- 高速な音声読み上げシステム
- Discord標準ではできない匿名投票機能
- 既知の短縮URLにも対応した招待リンクのブロック機能に加え、新規作成アカウントや初期アイコンのメッセージを自動削除。設定のオン/オフも可能。
- 1チャンネル3つまで設定可能の時報
- Welcomeメッセージ
- サーバーを宣伝できるサーバー掲示板
他にもたくさん
今後の展望
今後の展望です
- 機械学習を活用した高度な荒らし対策
- 導入100サーバー
- より高速な動作の実現
Swiftlyは現在も開発が進行中です。
宣伝にはなりますが、Swiftlyは今後もより多機能なDiscordBotを目指していきます。ぜひ導入のほど、よろしくお願いいたします。
公式サイト
Discussion