seyfert
Version:
The most advanced framework for discord bots
68 lines (67 loc) • 2.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Messages = void 0;
const transformers_1 = require("../../client/transformers");
const common_1 = require("../../common");
const guild_related_1 = require("./default/guild-related");
class Messages extends guild_related_1.GuildRelatedResource {
namespace = 'message';
//@ts-expect-error
filter(data, id, channel_id, from) {
return true;
}
parse(data, _key, _channel_id) {
const { author, member, ...rest } = data;
if (author?.id)
rest.user_id = author.id;
return rest;
}
get(id) {
return (0, common_1.fakePromise)(super.get(id)).then(rawMessage => {
return this.cache.users && rawMessage?.user_id
? (0, common_1.fakePromise)(this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id))).then(user => {
return user ? transformers_1.Transformers.Message(this.client, { ...rawMessage, author: user }) : undefined;
})
: undefined;
});
}
raw(id) {
return super.get(id);
}
bulk(ids) {
return (0, common_1.fakePromise)(super.bulk(ids)).then(messages => messages
.map(rawMessage => {
return this.cache.users && rawMessage?.user_id
? (0, common_1.fakePromise)(this.cache.adapter.get(this.cache.users.hashId(rawMessage.user_id))).then(user => {
return user ? transformers_1.Transformers.Message(this.client, { ...rawMessage, author: user }) : undefined;
})
: undefined;
})
.filter(x => x !== undefined));
}
bulkRaw(ids) {
return super.bulk(ids);
}
values(channel) {
return (0, common_1.fakePromise)(super.values(channel)).then(messages => {
const hashes = this.cache.users
? messages.map(x => (x.user_id ? this.cache.users?.hashId(x.user_id) : undefined))
: [];
return (0, common_1.fakePromise)(this.cache.adapter.bulkGet(hashes.filter(x => x !== undefined))).then(users => {
return messages
.map(message => {
const user = users.find(user => user.id === message.user_id);
return user ? transformers_1.Transformers.Message(this.client, { ...message, author: user }) : undefined;
})
.filter(x => x !== undefined);
});
});
}
valuesRaw(channel) {
return super.values(channel);
}
keys(channel) {
return super.keys(channel);
}
}
exports.Messages = Messages;