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