javascript - 检查邀请时如下
问题描述
如果我在打开机器人时创建新的服务器快速邀请,则会发生错误。在其他情况下,它可以工作
const invites = {};
const wait = require('util').promisify(setTimeout);
client.on('ready', () => {
wait(1000);
g.fetchInvites().then(guildInvites => {
invites[g.id] = guildInvites;
});
});
});
client.on('guildMemberAdd', member => {
member.guild.fetchInvites().then(guildInvites => {
const ei = invites[member.guild.id];
invites[member.guild.id] = guildInvites;
const invite = guildInvites.find(i => ei.get(i.code).uses < i.uses);
const inviter = client.users.get(invite.inviter.id);
const logChannel = member.guild.channels.find(channel => channel.name === "join-logs");
logChannel.send(`${member.user.tag} joined using invite code ${invite.code} from ${inviter.tag}. Invite was used ${invite.uses} times since its creation.`);
});
});
错误:
2019-07-07T09:49:20.363359+00:00 app[worker.1]: Unhandled Rejection:
2019-07-07T09:49:20.363377+00:00 app[worker.1]: TypeError: Cannot read property 'uses' of undefined
2019-07-07T09:49:20.363378+00:00 app[worker.1]: at guildInvites.find.i (./bot.js:398:57)
2019-07-07T09:49:20.363380+00:00 app[worker.1]: at Map.find (./node_modules/discord.js/src/util/Collection.js:160:13)
2019-07-07T09:49:20.363381+00:00 app[worker.1]: at member.guild.fetchInvites.then.guildInvites (./bot.js:398:33)
2019-07-07T09:49:20.363382+00:00 app[worker.1]: at process._tickCallback (internal/process/next_tick.js:68:7)
398截止日期
const invite = guildInvites.find(i => ei.get(i.code).uses < i.uses);
解决方案
使用的邀请是新的,尚未在缓存中。但是,ei.get(i.code).uses
假设它存在,并在它不存在时尝试使用它的属性。
此修改后的谓词函数将返回未缓存的邀请,或使用增加的邀请。
const invite = guildInvites.find(i => !ei.get(i.code) || ei.get(i.code).uses < i.uses);
推荐阅读
- odoo-13 - 在 odoo 13 中将“供应商产品代码”添加到 QWEB 报告中
- spring - 具有 Project Reactor 稳定性的 Spring Cloud Stream
- flutter - AutoRoute 包:如何返回到 BottomNavigationBar 中的上一个选项卡?
- python - 找出出现频率最高的IP地址并统计它出现的次数
- sql - Oracle SQL Query 列出至少在 ID 为 1 的公司工作的所有域中工作的公司
- c# - 如何使用 c# 标准将 16 位 (rgb565) bmp 加载到字节数组中
- python - 获取长度为 n 的两个元素的所有组合的列表
- c# - 有没有更好的方法来计算滚动球的方向以使相机跟随它?
- scala - 如何知道在 scala 中推断的返回类型
- go - 获取 cgo 运行时错误“cgo 参数具有指向 Go 指针的 Go 指针”