add rememeberReplyMention
This commit is contained in:
parent
a5c154e6dc
commit
bc226719b4
1 changed files with 63 additions and 0 deletions
63
rememberReplyMention/index.tsx
Normal file
63
rememberReplyMention/index.tsx
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
import { definePluginSettings } from "@api/Settings";
|
||||||
|
import { Devs } from "@utils/constants";
|
||||||
|
import definePlugin, { OptionType } from "@utils/types";
|
||||||
|
import type { Message } from "discord-types/general";
|
||||||
|
|
||||||
|
const settings = definePluginSettings({}).withPrivateSettings<{
|
||||||
|
users?: Record<string, boolean>;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
export default definePlugin({
|
||||||
|
name: "RememberReplyMention",
|
||||||
|
description: "Remember whether to ping on reply for each user",
|
||||||
|
authors: [{ name: "slonkazoid", id: 276363003270791168n }],
|
||||||
|
settings,
|
||||||
|
|
||||||
|
shouldMention(message: Message, isHoldingShift: boolean) {
|
||||||
|
if (settings.store.users === undefined) settings.store.users = {};
|
||||||
|
let preference = settings.store.users[message.author.id];
|
||||||
|
if (typeof preference !== "boolean") {
|
||||||
|
preference = !isHoldingShift;
|
||||||
|
settings.store.users[message.author.id] = preference;
|
||||||
|
}
|
||||||
|
console.log(message.author.id, preference);
|
||||||
|
return preference;
|
||||||
|
},
|
||||||
|
|
||||||
|
togglePing(
|
||||||
|
{
|
||||||
|
channelId,
|
||||||
|
shouldMention,
|
||||||
|
}: {
|
||||||
|
channelId: string;
|
||||||
|
shouldMention: boolean;
|
||||||
|
},
|
||||||
|
replies: Record<string, { message: Message }>
|
||||||
|
) {
|
||||||
|
console.log(arguments);
|
||||||
|
let reply = replies[channelId];
|
||||||
|
if (reply === undefined) return;
|
||||||
|
let id = reply.message.author.id;
|
||||||
|
if (settings.store.users === undefined) settings.store.users = {};
|
||||||
|
console.log("updated state for", id, shouldMention);
|
||||||
|
settings.store.users[id] = shouldMention;
|
||||||
|
},
|
||||||
|
|
||||||
|
patches: [
|
||||||
|
{
|
||||||
|
find: ',"Message")}function',
|
||||||
|
replacement: {
|
||||||
|
match: /:(\i),shouldMention:!(\i)\.shiftKey/,
|
||||||
|
replace:
|
||||||
|
":$1,shouldMention:$self.shouldMention($1,$2.shiftKey)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
find: "SET_PENDING_REPLY_SHOULD_MENTION:",
|
||||||
|
replacement: {
|
||||||
|
match: /(let{channelId:\i,shouldMention:\i}=(\i);\i in (\i)&&)/,
|
||||||
|
replace: "$self.togglePing($2, $3);$1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
Loading…
Reference in a new issue