Giphy 无法在 Discord 机器人上运行 (javascript)
Giphy not working on Discord bot (javascript)
我正在关注 this 关于如何制作 discord 机器人的教程,一切正常,直到 33:32 他添加了我已经安装 giphy sdk/api 的 giphy 东西,创建一个应用程序,但在他做出搜索声明后他说你可以控制台记录它所以我做到了,并且有一些 gif 结果出来,在我的控制台上返回未定义(我不知道为什么),然后他添加了一些数学东西,我也这样做了,然后在他添加消息部分的地方他还添加了这段代码files:[responseFinal.images.fixed_height.url]
,然后在我的控制台上返回了这个
(node:3136) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'images' of undefined
at D:\Discord bots\Oboto v2.0\index.js:24:61
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:3136) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:3136) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
这让我感到困惑,然后我选择了另一种方法,而不是 giphy.search
我做了
giphy.random
使用相同的参数,删除了数学内容和 console.log(response)
响应并猜测它实际上给了我一个 gif!(当然是在控制台中)然后我实现了我的 files:[]
语句 aaaa 并且它返回相同的东西 (cannot read property 'images' of undefined
) 我对 discord.js 和 javascript 也有点陌生,这也是我的全部代码,
const Discord = require('discord.js');
const { prefix, token, giphyToken } = require('./config.json');
const client = new Discord.Client();
var GphApiClient = require('giphy-js-sdk-core')
giphy = GphApiClient(giphyToken)
client.once('ready', () => {
console.log('Ready!');
});
client.on('message', message => {
if (message.member.hasPermission(["KICK_MEMBERS", "BAN_MEMBERS"])){
if (message.content.startsWith(`${prefix}kick`)) {
let member = message.mentions.members.first();
member.kick().then((member) =>{
giphy.random('gifs', {'q':'fail'})
.then((response) => {
console.log(response);
message.channel.send(":wave:",{files:[response.images.fixed_height.url]});
})
})
}
}
})
client.login(token);
cannot read property 'images' of undefined
,这意味着您正在尝试访问空对象。与 java 中的空指针异常相同。这意味着您的回复为空。
而且您还得到了 UnhandledPromiseRejectionWarning
,这意味着您的 promise 正在抛出您没有在任何地方捕获的错误。你可以像这样捕获你的错误
member.kick().then((member) =>{
giphy.random('gifs', {'q':'fail'})
.then((response) => {
console.log(response);
message.channel.send(":wave:",{files:[response.images.fixed_height.url]});
}).catch(e => { console.error(e}) }
}).catch(e => { console.error(e) }
现在您可以看到遇到了什么错误。您还可以将 try catch 方法与 async await 结合使用。
此代码由我修复:D
Discord Bot - 使用 Giphy 踢成员
我根本不是专业人士。
您也可以将此giphy添加到新会员通知中。
const Discord = require('discord.js');
const { prefix, token, giphyToken } = require('./config.json');
const bot = new Discord.Client();
var GphApiClient = require('giphy-js-sdk-core');
bot.giphy = GphApiClient(giphyToken);
bot.on('message', (message) => {
if (message.member.hasPermission(['KICK_MEMBER', 'BAN_MEMBERS'])) {
//console.log(message.content);
if (message.content.startsWith(`${prefix}kick`)) {
//message.channel.send("kick")
let member = message.mentions.members.first();
member.kick().then((member) => {
bot.giphy.search('gifs', { q: 'fail' }).then((response) => {
var totalResponses = response.data.length;
var responseIndex = Math.floor(Math.random() * 10 + 1) % totalResponses;
var responseFinal = response.data[responseIndex];
message.channel.send(':wave: ' + member.displayName + ' has been kicked!',{
files: [responseFinal.images.fixed_height.url]
}
)
})
})
}
}
});
bot.login(token);
我正在关注 this 关于如何制作 discord 机器人的教程,一切正常,直到 33:32 他添加了我已经安装 giphy sdk/api 的 giphy 东西,创建一个应用程序,但在他做出搜索声明后他说你可以控制台记录它所以我做到了,并且有一些 gif 结果出来,在我的控制台上返回未定义(我不知道为什么),然后他添加了一些数学东西,我也这样做了,然后在他添加消息部分的地方他还添加了这段代码files:[responseFinal.images.fixed_height.url]
,然后在我的控制台上返回了这个
(node:3136) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'images' of undefined
at D:\Discord bots\Oboto v2.0\index.js:24:61
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:3136) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:3136) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
这让我感到困惑,然后我选择了另一种方法,而不是 giphy.search
我做了
giphy.random
使用相同的参数,删除了数学内容和 console.log(response)
响应并猜测它实际上给了我一个 gif!(当然是在控制台中)然后我实现了我的 files:[]
语句 aaaa 并且它返回相同的东西 (cannot read property 'images' of undefined
) 我对 discord.js 和 javascript 也有点陌生,这也是我的全部代码,
const Discord = require('discord.js');
const { prefix, token, giphyToken } = require('./config.json');
const client = new Discord.Client();
var GphApiClient = require('giphy-js-sdk-core')
giphy = GphApiClient(giphyToken)
client.once('ready', () => {
console.log('Ready!');
});
client.on('message', message => {
if (message.member.hasPermission(["KICK_MEMBERS", "BAN_MEMBERS"])){
if (message.content.startsWith(`${prefix}kick`)) {
let member = message.mentions.members.first();
member.kick().then((member) =>{
giphy.random('gifs', {'q':'fail'})
.then((response) => {
console.log(response);
message.channel.send(":wave:",{files:[response.images.fixed_height.url]});
})
})
}
}
})
client.login(token);
cannot read property 'images' of undefined
,这意味着您正在尝试访问空对象。与 java 中的空指针异常相同。这意味着您的回复为空。
而且您还得到了 UnhandledPromiseRejectionWarning
,这意味着您的 promise 正在抛出您没有在任何地方捕获的错误。你可以像这样捕获你的错误
member.kick().then((member) =>{
giphy.random('gifs', {'q':'fail'})
.then((response) => {
console.log(response);
message.channel.send(":wave:",{files:[response.images.fixed_height.url]});
}).catch(e => { console.error(e}) }
}).catch(e => { console.error(e) }
现在您可以看到遇到了什么错误。您还可以将 try catch 方法与 async await 结合使用。
此代码由我修复:D
Discord Bot - 使用 Giphy 踢成员
我根本不是专业人士。 您也可以将此giphy添加到新会员通知中。
const Discord = require('discord.js');
const { prefix, token, giphyToken } = require('./config.json');
const bot = new Discord.Client();
var GphApiClient = require('giphy-js-sdk-core');
bot.giphy = GphApiClient(giphyToken);
bot.on('message', (message) => {
if (message.member.hasPermission(['KICK_MEMBER', 'BAN_MEMBERS'])) {
//console.log(message.content);
if (message.content.startsWith(`${prefix}kick`)) {
//message.channel.send("kick")
let member = message.mentions.members.first();
member.kick().then((member) => {
bot.giphy.search('gifs', { q: 'fail' }).then((response) => {
var totalResponses = response.data.length;
var responseIndex = Math.floor(Math.random() * 10 + 1) % totalResponses;
var responseFinal = response.data[responseIndex];
message.channel.send(':wave: ' + member.displayName + ' has been kicked!',{
files: [responseFinal.images.fixed_height.url]
}
)
})
})
}
}
});
bot.login(token);