〈DiscordBot〉とあるBot
サーバーレス(AWS LambdaとDynamo DB)で動作するディスコードBotを作りました。 AWSに関しては初めて触りましたが自分でもよくやったといえるくらいの完成度でBotを作れたと思います。現在利用者数は約2000人。
もともと「とあるBot」はVPSで動かしていたのですが料金が円安もあってかばかにならないくらいまで上がってしまったので満を持してサーバーレスで動作するように変更しました
Cloudflare WorkersとAzure Functions、AWS Lambdaの中から開発のしやすさや応答時間等を考えた結果AWS Lambdaとなりました。
Valorant部分の実装はSQLを使いたかったのでCloudflare WorkersをLambdaから呼び出してユーザーデータをD1に保存しています(超非効率)
また、OAuth2を利用したユーザー認証及びバックアップの機能も実装しました。
ユーザーデータはDynamo DBに保存しており、5日に1回Refresh Tokenを利用してTokenを新しくするようにしてあります。
認証のバックエンドもすべてLambdaで実装しました。
Webサイト:https://guvv.net
WebサイトのほうはNext.js(React)をVercelで動かしています。
サイトのデザインは苦手なのでトップページ及びRiotログインのcallbackページのデザインは@Xulluaさんに依頼して作っていただきました。
Discordのユーザー認証ページはデザインから実装まで私が行いました。
↑riotアカウントのログインcallbackページ
↑DiscordのOauth2認証のcallbackページ
↑ユーザー認証のFigmaモックアップ
<使用技術>
- Bot
- Node.js(Typescript)
- AWS Lambda
- AWS Dynamo
- Cloudflare Workers(Valorant部分のみ)
- Cloudflare D1(Valorant部分のみ)
- Webページ
- Vercel
- Next.js(React)