はじめに
最近、日本語プログラミング言語「なでしこ」の更新履歴を見ていたら、いつの間にやら「DISCORD送信」なる命令が追加されていました。私自身、普段からあまりcnakoやphpnakoは使用していないため、見逃していたのですが、アドベントカレンダーに際して、「DISCORD送信」の命令を使ってみたいと思います。
cnakoのセットアップ
実のところ、ブラウザや公式サイトでサクッと使える主力ランタイム「wnako」には、「DISCORD送信」なる命令は含まれていません。そこでこのあたりのページを参考に、とりあえずWindows版のオールインワンパッケージをダウンロードし、適当な場所に展開します。
「適当な場所」と書きましたが、フォルダパスに空白が入っていると正常に動作しない現象を確認しています。(例:"C:\Users\Osane kasumi\Downloads\nadesiko3win32-3.7.2" など)
可能なら、Cドライブ直下など、開発しやすい箇所に配置した方が良いかと思います。
展開されたフォルダの中にある「start.exe」を起動すると、下の画像のような起動画面になります。Windows版のオールインワンパッケージは、更新がやや遅いので、最新版のなでしこではない可能性があります。そのため、「なでしこ3 最新版をインストール」ボタンを押して、なでしこを最新版にしておきましょう。
最新版になったら「なでしこ3のPC版(Node.jsランタイム)を実行」ボタンを押して、編集画面を起動してください。
エラーが発生した場合
なお、2025年11月17日時点の最新版では、以下のようなエラーが発生します。
このようなエラーが発生した場合はTeraPadなど適当なエディタで、setupフォルダ配下の任意のbatファイル(画像はupdate-new-version.batの例)を開いて、改行コードを「CR+LF」にして保存するか、このYahoo知恵袋を参考に改行コードを編集するか、batファイルをメモ帳で開いて、書かれているコマンドを一行ずつコマンドプロンプトで実行してください。
Discordのセットアップ
Discord側ではWeb-hook用のURLを取得したいと思います。自分が管理者のサーバがあれば、その中のチャンネルを使いまわせばよいかと思いますが、サーバが無ければ自分用のサーバを作成しましょう。
次に、テキストチャンネル一覧の中から、botに投稿させたいチャンネルを選び、チャンネル名の横にある歯車マークを押します。

次に連携サービスを押して、「ウェブフックを作成」ボタンを押します。

botの名前等を編集し、保存します。ついてに、「ウェブフックURLをコピー」しておきましょう。

早速書いてみる
ここまで来たら、あとはなでしこでプログラムを書くだけです。先ほどセットアップした「なでしこ3のPC版(Node.jsランタイム)」の編集画面から、「→ファイルの新規作成」ボタンを押します。

開いた画面に、以下のようにコードを打ち込み実行すると、Discordへメッセージが送信されます。(変数《ウェブフックURL》はご自身のものに変更してください)
# 新規ファイル
《ウェブフックURL》=「https://discord.com/api/webhooks/xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxx」
《ウェブフックURL》に「なでしこから投稿しています!」をDISCORD送信
「送信しました」と表示
また、次のように書くと、画像ファイルやPDFファイルを送信することも可能です。
# 新規ファイル
《ウェブフックURL》=「https://discord.com/api/webhooks/xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxx」
《ファイル》=「C:/nadesiko3win32-3.7.2/7_shikoku1_kagawa.png」
《ウェブフックURL》に《ファイル》と「【問題】ここはどこ?」をDISCORDファイル送信
「送信しました」と表示
# 新規ファイル
《ウェブフックURL》=「https://discord.com/api/webhooks/xxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxx」
《ファイル》=「C:/nadesiko3win32-3.7.2/重要書類.pdf」
《ウェブフックURL》に《ファイル》と「ファイルが提出されました。{改行}コメント:確認よろしくお願いします。会議は14時~です」をDISCORDファイル送信
「送信しました」と表示
このようにウェブフックで様々なサービスと連携させ、情報をDiscordに集約することが可能になってきます。ただし、ウェブフックは投稿のみ使用できます。Discord上に投稿されたメッセージに反応する等の双方向性が必要なことは、APIを経由する必要があります。詳しくはこちらのページを参照してください。
おわりに
WindowsやUnix系OSでは、任意のコマンドを定期実行できる機能が備わっています。こうした機能と組み合わせて、サーバ上で特定のディレクトリを定期的に監視し、ファイルがアップロードされたら、Discordにも通知する、的な使い方も考えられるかと思います。ぜひ、様々なプログラムを作ってみてください。退屈なことは「なでしこ」にさせましょう!
また、「DISCORD送信」に関する、より詳しいデータは以下のページを確認してください。
GitHub - nadesiko3/src/plugin_node.mts
以上





