Skip to content

Commit 6907747

Browse files
committed
feat(Messages): add pinning support
1 parent d7927da commit 6907747

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/maps/Channels.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ import { action, computed, makeAutoObservable, runInAction } from "mobx";
1515
import isEqual from "lodash.isequal";
1616
import { decodeTime, ulid } from "ulid";
1717

18-
import { Nullable, toNullable } from "../util/null";
18+
import {
19+
Nullable /* eslint-disable mobx/missing-make-observable */,
20+
toNullable,
21+
} from "../util/null";
1922
import Collection from "./Collection";
2023
import { Message } from "./Messages";
2124
import { Client, FileArgs } from "..";

src/maps/Messages.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export class Message {
4343
masquerade: Nullable<Masquerade>;
4444
reactions: ObservableMap<string, ObservableSet<string>>;
4545
interactions: Nullable<Interactions>;
46+
pinned: Nullable<boolean>;
4647

4748
get channel() {
4849
return this.client.channels.get(this.channel_id);
@@ -183,6 +184,7 @@ export class Message {
183184
this.reply_ids = toNullable(data.replies);
184185
this.masquerade = toNullable(data.masquerade);
185186
this.interactions = toNullable(data.interactions);
187+
this.pinned = toNullable(data.pinned);
186188

187189
this.reactions = new ObservableMap();
188190
for (const reaction of Object.keys(data.reactions ?? {})) {
@@ -240,6 +242,7 @@ export class Message {
240242
return newMap;
241243
});
242244
apply("interactions");
245+
apply("pinned");
243246
}
244247

245248
@action append({ embeds }: Pick<Partial<MessageI>, "embeds">) {
@@ -248,6 +251,24 @@ export class Message {
248251
}
249252
}
250253

254+
/**
255+
* Pin a message
256+
*/
257+
async pin() {
258+
return await this.client.api.post(
259+
`/channels/${this.channel_id as ""}/messages/${this._id as ""}/pin`,
260+
);
261+
}
262+
263+
/**
264+
* Unpin a message
265+
*/
266+
async unpin() {
267+
return await this.client.api.delete(
268+
`/channels/${this.channel_id as ""}/messages/${this._id as ""}/pin`,
269+
);
270+
}
271+
251272
/**
252273
* Edit a message
253274
* @param data Message edit route data

0 commit comments

Comments
 (0)