2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

weather-jsを使ってDiscordに天気を送る

Posted at

#使うもの
$ npm i weather-js
weather-js
$ npm i discordjs/discord.js
masterブランチのDiscord.js
#コードたち

  const args = message.content.slice(/*ここにプレフィックス*/).trim().split(/ +/g);
        weather.find({search: args[0], degreeType: 'C'}, function(err, result) {
            if (err) message.channel.send(err);
            if (result.length === 0) {
                message.channel.send('**場所を取得できませんでした**') 
                return; 
            } 
            var current = result[0].current;
            switch(current.skytext){
            case "Mostly Sunny": 
            var skytext = "ほぼ晴れ";
            break;
            case "Cloudy" :
            var skytext = "曇り";
            break;
            case "Partly Cloudy":
            var skytext = "晴れのち曇り";
            break;
            case "Sunny":
            var skytext = "晴れ";
            break;
            case "Clear" :
            var skytext = "雲1つない快晴";
            break;
            case "Mostly Clear":
            var skytext = "ほぼ快晴";
            break;
            case "Mostly Cloudy":
            var skytext = "ほぼ曇り";
            break;
            case "Partly Sunny":
            var skytext = "所により晴れ";
            break;
            case "Light Rain":
            var skytext = "小雨";
            break;
            default:
            var skytext = current.skytext;
            break
            }
            const embed = new Discord.MessageEmbed()
                .setDescription('**' + skytext + '**') 
                .setAuthor(`${current.date}${current.observationpoint}の天気`) 
                .setThumbnail(current.imageUrl) 
                .setColor(Color) 
                .addField('温度',`${current.temperature}℃`, true)
                .addField('体感温度', `${current.feelslike}℃`, true)
                .addField('',current.winddisplay, true)
                .addField('湿度', `${current.humidity}%`, true);
            message.channel.send(embed);
        });

#動作
Screenshot from Gyazo
#説明
weather.findのところはweather-jsの機能で、天気を探しているやつ。
searchのところは検索する場所(地名),DegreeTypeはCとFのやつ。Cをお勧めする
if(err)からswitchの場所までは地名を検索できないまたはエラーが出た時の動作。
switchはそのままweather-jsから引っ張ると英語なので翻訳した。
翻訳しなくていいなら、switchのところをぜーんぶ消してembedのsetDescriptionをcurrent.skytextに変える。
#最後に
天気を取得するとき、APIの仕様変更やいろいろのせいで泥沼にハマってしまったので、記事を作ってみました。
実は、これ初めての記事なので悪い部分があれば指摘をお願いします。
もしこの記事を見てDiscord.jsに興味が沸いたら、
Discord.js全般のコミュニティがあるのでそこでさらに詳しい情報が得られると思います。

#参考にしたサイト
Discord.jsのライブラリ
weather-jsのnpmのサイト

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?