我的机器人中有一个名为weather的命令,它可以正常工作,但是如果用户编写时不带任何参数,我想发送一条错误消息。
如果参数不是一个地方,它会起作用,但是如果您在不带任何参数的情况下编写它,它将不会回复任何内容
这是代码(已更新为完整代码)
const Discord = require('discord.js');
const weather = require('weather-js');
exports.run = async (client, message, args) => {
weather.find({search: args[0], degreeType: "C"}, function(err, result){
if (err) message.channel.send(err);
const noargs = new Discord.RichEmbed()
.setDescription(`Input a valid location, please`)
.setColor(0xfd5454)
if(!result.length) {
message.channel.send(noargs);
return;
}
var current = result[0].current;
var location = result[0].location;
如果您输入“,weather不存在城市”,它会起作用,但是如果您写入“,weather”而没有任何参数,那么它将不起作用。 PD:noargs是不和谐的嵌入,已声明但不包含在本文中。
答案 0 :(得分:1)
const weather = require('weather-js');
const Discord = require('discord.js');
module.exports = {
name: "weather",
description: "Checks a weather forecast",
async execute(client, message, cmd, args, Discord){
weather.find({search: args.join(" "), degreeType: 'F'}, function (error, result){
// 'C' can be changed to 'F' for farneheit results
if(error) return message.channel.send(error);
if(!args[0]) return message.channel.send('Please specify a location')
if(result === undefined || result.length === 0) return message.channel.send('**Invalid** location');
var current = result[0].current;
var location = result[0].location;
const weatherinfo = new Discord.MessageEmbed()
.setDescription(`**${current.skytext}**`)
.setAuthor(`Weather forecast for ${current.observationpoint}`)
.setThumbnail(current.imageUrl)
.setColor(0x111111)
.addField('Timezone', `UTC${location.timezone}`, true)
.addField('Degree Type', 'Celsius', true)
.addField('Temperature', `${current.temperature}°`, true)
.addField('Wind', current.winddisplay, true)
.addField('Feels like', `${current.feelslike}°`, true)
.addField('Humidity', `${current.humidity}%`, true)
message.channel.send(weatherinfo)
})
}
}
答案 1 :(得分:0)
如果要检查是否在禁止使用的参数的情况下,可以执行以下操作:
if(args.length == 0) return message.channel.send('You need to provide a city');
答案 2 :(得分:0)
...
weather-js
被编程为如果用户未向args提供默认消息,则回答该用户。我想知道如何更改该消息。
如果您真的想要更改此消息,而不是像@PLASMA chicken所建议的那样自己检查您的论点,则该消息位于weather-js/index.js
的第31行。