Add fetchMessages().

This commit is contained in:
Paul Makles
2021-01-22 11:36:28 +00:00
parent 0698ae195d
commit cce875d498
5 changed files with 25 additions and 7 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "revolt.js",
"version": "3.0.1-beta.3",
"version": "3.0.1-beta.4",
"main": "dist/index.js",
"repository": "https://gitlab.insrt.uk/revolt/revolt.js",
"author": "Paul Makles <insrt.uk>",
+6
View File
@@ -38,4 +38,10 @@ export namespace Channels {
nonce: string,
users: string[]
}
export type FetchMessagesRequest = {
limit?: number,
before?: string,
after?: string
}
}
+16 -5
View File
@@ -50,7 +50,7 @@ export default abstract class Channel {
return channel;
}
async fetchMessage(client: Client, id: string, data?: Channels.Message): Promise<Message> {
async fetchMessage(id: string, data?: Channels.Message, fetchingMultiple?: boolean): Promise<Message> {
let existing;
if (existing = this.messages.get(id)) {
if (data) {
@@ -61,19 +61,30 @@ export default abstract class Channel {
return existing;
}
let message = new Message(client, this, data ?? (await client.Axios.get(`/channels/${this.id}/messages/${id}`)).data);
let message = new Message(this.client, this, data ?? (await this.client.Axios.get(`/channels/${this.id}/messages/${id}`)).data);
await message.$sync();
this.messages.set(id, message);
client.messages.set(id, message);
client.emit('create/message', message);
this.client.messages.set(id, message);
this.client.emit('create/message', message, fetchingMultiple);
return message;
}
async fetchMessages(params?: Channels.FetchMessagesRequest): Promise<Message[]> {
let res = await this.client.Axios.get(`/channels/${this.id}/messages`, { params });
let messages = [];
for (let entry of res.data) {
messages.push(await this.fetchMessage(entry.id, entry, true));
}
return messages;
}
async sendMessage(content: string, nonce: string = ulid()) {
let res = await this.client.Axios.post(`/channels/${this.id}/messages`, { content, nonce });
let fire = !this.client.messages.has(res.data.id);
let message = await this.fetchMessage(this.client, res.data.id, res.data);
let message = await this.fetchMessage(res.data.id, res.data);
fire && this.client.emit('message', message);
return message;
}
+1
View File
@@ -10,6 +10,7 @@ client.once('ready', async () => {
console.log(`Logged in as @${client.user?.username}`);
// let channel = client.channels.values().next().value as Channel;
// console.log(await channel.fetchMessages());
// let message = await channel.sendMessage("epic!");
// await message.edit("pogger!");
// await message.delete();
+1 -1
View File
@@ -96,7 +96,7 @@ export class WebSocketClient {
case 'Message': {
if (!this.client.messages.has(packet._id)) {
let channel = await Channel.fetch(this.client, packet.channel);
let message = await channel.fetchMessage(this.client, packet._id, packet);
let message = await channel.fetchMessage(packet._id, packet);
this.client.emit('message', message);
}
break;