Tips
npm run register でエラー
Section titled “npm run register でエラー”コマンド登録の成否とは関係なく、 register.js を実行できない場合のエラー。
次の修正を検討してみてください。(いずれか、または複合)
- package.json
"type": "module",
- tsconfig.json
"moduleResolution": "Node","moduleResolution": "Bundler",
- register.ts
- 他のファイルからインポートするときに
.jsを付ける
import { commands } from './commands.js'
- 他のファイルからインポートするときに
- 環境のアップデート
- Node v23.6.0 または Bun を利用する
どうしてもエラーを解決できないとき
- ファイル分割を諦める
register.tsをcommands.ts等に分割しない
- コマンド登録用のURLエンドポイントを生やす
- Hono 等を使いルーティングし、登録用URLを作成する
- 念のため、ベーシック認証等をかける
npm run dev で開発したい時
Section titled “npm run dev で開発したい時”本番は、 Cloudflare Workers などのプラットフォームにデプロイするが、開発をローカルで行いたい場合、こちらを参考にしてください。
ライブラリの開発者としては、 npm run dev はおすすめしていません。(明確な意図があれば問題ありません)
代わりに次のいずれかを検討してください。
- 開発用の Bot アカウントを作成する
- 本番用 Bot に、開発サーバーだけ利用可能な、開発用コマンドを登録する
wrangler dev でエラー
Section titled “wrangler dev でエラー”開発環境で、コマンド登録用のURLエンドポイントにアクセスしたときに発生するエラー。
次の修正をしてみてください。
.envファイルを.dev.varsファイルにリネーム.gitignoreに.dev.varsを追加(なければ)
URL 登録時の Validation error
Section titled “URL 登録時の Validation error”Discord ダッシュボードの INTERACTIONS ENDPOINT URL に URL を登録する際のエラー。
次の修正をしてみてください。
- 登録する URL の
_(アンダーバー)を-(ハイフン)に変更aaa_bbb.user.workers.dev->aaa-bbb.user.workers.dev
絵文字(emoji)に関する注意点
Section titled “絵文字(emoji)に関する注意点”new Button('button-1', 'ボタン').emoji('🔄')絵文字を設定し Discord へ送信したとき、何も応答しない事があります。
おそらく Discord 側で絵文字ユニコードの字形選択子を適切に認識できてないかもしれません。
字形選択子を排除したと思われる絵文字一覧
いくつかの環境による tips (β)
Section titled “いくつかの環境による tips (β)”const discord = new DiscordHono()discord.command('hello', c => c.res('Discord World'))
const hono = new Hono()hono.get('/', c => c.text('Hono World'))hono.mount('/interaction', discord.fetch)- ブラウザ
https://YOUER_DOMAIN.com->Hono Worldが表示される
- Discord Bot
/hello->Discord Worldが返答される
- Discord Interaction Endpoint
https://YOUER_DOMAIN.com/interactionを登録
Deno Deploy
Section titled “Deno Deploy”import { DiscordHono } from 'npm:discord-hono'
const app = new DiscordHono()app.command('ping', c => c.res('Pong!!'))
Deno.serve(app.fetch)Fastly Compute
Section titled “Fastly Compute”import { env } from 'fastly:env'import { DiscordHono } from 'discord-hono'
const app = new DiscordHono({ discordEnv: () => ({ APPLICATION_ID: env('DISCORD_APPLICATION_ID'), PUBLIC_KEY: env('DISCORD_PUBLIC_KEY'), TOKEN: env('DISCORD_TOKEN'), }),}).command('ping', c => c.res('Pong!!'))
addEventListener('fetch', event => event.respondWith(app.fetch(event.request, undefined, event)),)