DiscordボットをHerokuで動かすときに、Heroku Postgresを使ってデータを保存したいという人向けのテンプレートを作成しました。
世代管理もできます。
# このテンプレートを使う際に
TypeORM (opens new window)の使い方を理解していないと、難しい内容となっています。
Discord.jsを使って、Discordボットを作るためにプログラミングを始めた人はこの記事を参考にしないでください。
初心者の方はまずDiscord.js Japan User Group (opens new window)のScrapboxやDiscordサーバーを利用して学習をはじめてみてはいかが?
# クレジットカードの登録が必要
Worker
を月1000時間に伸ばさないと常時起動することができない- 一ヶ月が700時間以上あるため
- クレジットカードを登録していない状態だと、月550時間が限界
Heroku Postgres
がアドオンであるため- 無料のプランでもクレジットカードの登録が必要
デフォルトでは課金しないので、安心してください。
# Dockerが必要
開発する際にローカルでPostgresを動かす必要があるため、Dockerが必要であり、使用方法を知っている必要があります。
# Gitが必要
gitが必要で、使用方法を知っている必要があります。
# Heroku CLIが必要
公式サイト (opens new window)からインストールしましょう。
# リポジトリからデプロイボタンをクリックする
リポジトリ (opens new window)のREADMEにあるDeploy to Heroku
の画像をクリックするとHerokuへリダイレクトされ、下の画像のようなメニューが出てくると思います。
必須の項目を入力し、Heroku PostgresがFreeになっていることを必ず確認してから、Deploy app
をクリックしてください。
完了すると、既にDiscordボットが稼働していると思います。
# ローカルにソースコードをクローンしたり、コミットする
アプリのダッシュボードからDeployをクリックし、Deploy using Heroku Git
に詳しいことが書いてあります。
# データの保存方法
デフォルトではUser
, Guild
, GuildMember
の3つが拡張されており、getSettings
メソッドが追加されています。
Active Recordなので、下記のような書き方をします。
// src/bot.ts
import './extensions'
import { Client } from '.'
const client = new Client()
client.on('message', async message => {
if (message.system || message.author.bot) return
if (!message.content.includes('discord')) return
const userSettings = await message.author.getSettings()
userSettings.level += 1
userSettings.save()
.catch(console.error)
})
client.login()
.catch(console.error)