add plugin (i forgot committing)
This commit is contained in:
commit
e7b79056e9
1 changed files with 66 additions and 0 deletions
66
index.tsx
Normal file
66
index.tsx
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
import { DataStore } from "@api/index";
|
||||||
|
import { Devs } from "@utils/constants";
|
||||||
|
import definePlugin from "@utils/types";
|
||||||
|
import { cache } from "@webpack";
|
||||||
|
import { Constants, MessageStore, RestAPI, UserStore } from "@webpack/common";
|
||||||
|
import { Message } from "discord-types/general";
|
||||||
|
|
||||||
|
const DATA_STORE_KEY = "huskchart";
|
||||||
|
type Husk = {
|
||||||
|
userId: string;
|
||||||
|
channelId: string;
|
||||||
|
messageId: string;
|
||||||
|
};
|
||||||
|
const messageCache = new Map<string, {
|
||||||
|
message?: Message;
|
||||||
|
fetched: boolean;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
async function getMessage(channelId: string, messageId: string): Promise<Message | undefined> {
|
||||||
|
const cached = messageCache.get(messageId);
|
||||||
|
if (cached) return cached?.message;
|
||||||
|
|
||||||
|
const storeMessage = MessageStore.getMessage(channelId, messageId);
|
||||||
|
if (storeMessage) {
|
||||||
|
messageCache.set(storeMessage.id, {
|
||||||
|
message: storeMessage,
|
||||||
|
fetched: false
|
||||||
|
});
|
||||||
|
return storeMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
const apiMessage = await RestAPI.get({
|
||||||
|
url: Constants.Endpoints.MESSAGES(channelId),
|
||||||
|
query: {
|
||||||
|
limit: 1,
|
||||||
|
around: messageId
|
||||||
|
},
|
||||||
|
retries: 2
|
||||||
|
}).catch(() => null);
|
||||||
|
if (apiMessage) {
|
||||||
|
messageCache.set(apiMessage.body[0].id, {
|
||||||
|
message: apiMessage,
|
||||||
|
fetched: true
|
||||||
|
});
|
||||||
|
return apiMessage.body[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default definePlugin({
|
||||||
|
name: "HuskChart",
|
||||||
|
description: "See how much you've been husked, and by who",
|
||||||
|
authors: [Devs.nin0dev],
|
||||||
|
flux: {
|
||||||
|
async MESSAGE_REACTION_ADD(event) {
|
||||||
|
const msg = await getMessage(event.channelId, event.messageId);
|
||||||
|
if (msg!.author.id !== UserStore.getCurrentUser().id) return;
|
||||||
|
if (!event.emoji.name.includes("husk")) return;
|
||||||
|
let husks: Husk[] = await DataStore.get(DATA_STORE_KEY) || [];
|
||||||
|
husks.push({
|
||||||
|
userId: event.userId,
|
||||||
|
channelId: event.channelId,
|
||||||
|
messageId: event.messageId
|
||||||
|
});
|
||||||
|
DataStore.set(DATA_STORE_KEY, husks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in a new issue