美雲このはちゃんの画像を定期的にDiscordに送信するプログラムを作る 【ConoHa VPS】

テクノロジー
この記事は約8分で読めます。

皆さんこんにちはっ!なりかくんです。
今回は、ConoHa VPSを使って美雲みくもこのはちゃんの画像をDiscordに30分毎で送信するプログラムを作っていきたいと思います!

この記事は、ConoHa Advent Calendar 2021の11日目の記事となります!当ブログでは、3年目の投稿となります。
過去の記事もぜひ見てみてください!

ConoHa Advent
「ConoHa Advent」の記事一覧です。
スポンサーリンク

30分毎に投稿するプログラムを書く

では、30分毎に美雲このはちゃんを投稿するプログラムを書いていきたいと思います。(起動時も投稿)
今回は、discord.jsのライブラリを利用します。完成したコードが以下のコードです。

const { Client, Intents } = require('discord.js');
const { token, channels } = require('./config.json');
const cron = require('node-cron');

const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

client.once('ready', async () => {
    console.log('Ready!');
    await sendMikuomoConoHa();
    cron.schedule(
        '0 */30 * * * *',
        async () => await sendMikuomoConoHa(),
        {
            timezone: "Asia/Tokyo"
        }
    );
});

client.login(token);

async function sendMikuomoConoHa () {
    try {
        let imgUrl = `https://conoha.mikumo.com/guideline/images/fanfic/fanfic_${Math.floor(Math.random() * 39) + 1}.png`;
        if (!imgUrl) return;
        for (const channelKey in channels) {
            let channel = client.channels.cache.get(channels[channelKey]);
            if (!channel || !channel.isText()) return;
            await channel.send({
                embeds: [
                    {
                        image: {
                            url: imgUrl
                        },
                        footer: {
                            text: "(C)GMO Internet, Inc. 再使用の禁止されています。"
                        }
                    }
                ]
            })
        }
    } catch (err) {
        console.error(err);
    }
}

簡単にコードの解説をしておきます。
まず、node-cronというライブラリで30分毎に美雲このはちゃんの画像が送信されるように決めておきます。
画像が送信される部分は、「美雲このはオフィシャルサイト」のイラストからお借りしました。
画像のURLが連番になっていたので連番をランダムで生成するようにしました。
また、フッターには「キャラクター使用のガイドライン」に沿って著作権表示と再使用の禁止と記載しています。

ConoHa VPSを契約する

では、次にConoHa VPSを契約していきたいと思います。今回は、そこまで重い処理をするわけではないので512MBのプランを契約して利用していきたいと思います。

レンタルサーバーならConoHa|登録者数39万アカウント突破
ConoHaではレンタルサーバー、VPS(仮想専用サーバー)、Windows Serverなどのホスティングサービスを提供しております。充実のラインナップからご利用用途に合わせてお好きなサービスをお選びいただけます。

ConoHaのアカウント登録などは今回は省きます。ダッシュボードを開いて、”サーバー追加“をクリックします。

スペックは、512MBの一番安いプランでイメージタイプはUbuntu 20.04を利用します。OSに関しては、Node.jsの最新バージョンが動けば正直なんでもいいです。

rootパスワードは、難しいパスワードを利用しておいたほうがいいです。重要なパスワードとなりますのでメモしておくなどをしておいたほうがいいです。

あとはSSH Keyを設定します。”キーを新規作成“にして、”+追加“をクリックします。

追加をクリックすると、「プライベートキーをダウンロードしてください。」と出てくるので、”ダウンロード”をクリックしてダウンロードします。すると、SSH Keyがダウンロードできます。

このSSH Keyを失くしてしまうと、SSHにログインできなくなるので注意してください。

では、サーバーを”追加”しましょう。

正常に追加することが出来たら、このようにサーバーリストに追加されます。
ネームタグの部分が水色になっているので、そこをクリックしてサーバーの詳細情報を表示します。

ここから、サーバーを再起動したりシャットダウンしたりを簡単に行うことが出来ます。
今回は、赤く囲っているIPアドレスを利用します。黒く塗りつぶしているIPアドレスを後で使用するのでメモしておきましょう。

SSHに接続する

次に、先ほど契約したサーバーに接続していきたいと思います。
今回は、Tera TermというSSHクライアントを利用します。

ソフトを開くと、接続画面が出ます。ホストに先ほどメモしたIPアドレスを入力します。TCPポートは、契約時は22の初期状態です。入力が出来たら、”OK“をクリックします。

セキュリティ警告画面が出てきますが、そのまま”続行“を押します。

ログイン画面が表示されます。ユーザー名には、”root” パスフレーズは先ほどConoHaのVPSを契約する際に設定したパスワードを入力します。
認証方式は、「RSA/DSA/ECDSA/ED25519鍵を使う」にチェックを入れて、先ほどダウンロードしたSSH Keyを秘密鍵のところで指定します。

すべて入力が完了したら、”OK”をクリックします。

ログインが成功すると、以下のような画面が表示されます。

Node.js v16をインストール

では、次にUbuntuにNode.js v16をインストールします。
以下の2つのコマンドを順番に実行しましょう。

# curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
# sudo apt-get install -y nodejs

インストールが終わったら、Node.js v16が正しくインストールできたか確認しておきましょう。

# node -v
v16.13.1

Gitでプログラムをクローンする

では、次にプログラムをサーバーにインストールしていきたいと思います。
今回は、なりかくんが用意したプログラムをGitHubにアップロードしていますのでそのままクローンします。

今回利用するレポジトリは以下のレポジトリになります。

GitHub - narikakun/mikumoconoha-30m-discord: 30分毎に美雲このはちゃんをDiscordに投稿するプログラム
30分毎に美雲このはちゃんをDiscordに投稿するプログラム. Contribute to narikakun/mikumoconoha-30m-discord development by creating an account on GitHub.

以下のコマンドを利用して、サーバーにクローンします。

# git clone https://github.com/narikakun/mikumoconoha-30m-discord.git

クローンが出来たら、ディレクトリが作成されます。lsコマンド等で確認してみましょう。
では、クローンしたディレクトリに移動しましょう。以下のコマンドで移動できます。

# cd mikumoconoha-30m-discord

必要なパッケージなどをダウンロード

では、次に必要なパッケージなどをダウンロードします。以下のコマンドで一発でダウンロードできます。

# npm install

設定ファイルなどを設定

では、これで最後の設定です。Discord BotをDiscord APIに接続するためにToken等を設定します。
viコマンドなどで、config.jsonを開いて以下のように編集します。

{
  "token": "ここにDiscord BotのToken",
  "channels": ["送信先チャンネルId"]
}

channelsに関しては、Arrayになっています。複数個指定すると、指定したチャンネルすべてで同じ内容が送信されます。

起動してみる

では、これで設定等が完了したので起動してみます。
以下のコマンドを利用して、プログラムを起動します。

# node index.js

実行して、「Ready!」と表示されると正常に起動しているということを表します。

Discordの指定したチャンネルを確認してみると、しっかり美雲このはちゃんが送られていることが確認できます!

pm2やforeverを利用すると常時起動することが出来ます。

最後に

今回は、ConoHa VPSを使って美雲このはちゃんの画像をランダムに30分毎にDiscordに送信するBotを制作しました。どうでしたか?

ConoHa VPSは簡単に使うことが出来て、とにかく美雲このはちゃんがカワイイのでぜひ使ってみてください!

レンタルサーバーならConoHa|登録者数39万アカウント突破
ConoHaではレンタルサーバー、VPS(仮想専用サーバー)、Windows Serverなどのホスティングサービスを提供しております。充実のラインナップからご利用用途に合わせてお好きなサービスをお選びいただけます。

最後までお読みいただきありがとうございました!次の記事もお楽しみっ!

困ったことがあったら、、
この記事に関して、困ったことがありましたらなりかくんのブログ公式Discordサーバーにて質問をすることが可能です!
ぜひ入ってみましょう!

Join the Narikakun Network Discord Server!
Check out the Narikakun Network community on Discord - hang out with 476 other members and enjoy free voice and text chat.

コメント

タイトルとURLをコピーしました