Equicord/src/equicordplugins/atSomeone/index.ts

54 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-07-30 18:21:43 -04:00
/*
* Vencord, a Discord client mod
* Copyright (c) 2024 Vendicated and contributors
* SPDX-License-Identifier: GPL-3.0-or-later
*/
import { addPreSendListener, removePreSendListener } from "@api/MessageEvents";
import { Devs } from "@utils/constants";
import definePlugin from "@utils/types";
import { ChannelStore, GuildMemberStore, SelectedChannelStore, SelectedGuildStore } from "@webpack/common";
export default definePlugin({
2024-09-23 11:45:32 -04:00
name: "AtSomeone",
2024-07-30 18:21:43 -04:00
authors: [Devs.Joona],
description: "Mention someone randomly",
patches: [
{
find: ".LAUNCHABLE_APPLICATIONS;",
replacement: [
{
match: /&(\i)\(\)\((\i),\i\(\)\.test\)&&(\i)\.push\(\i\(\)\)/g,
replace: "$&,$1()($2,/someone/.test)&&$3.push({text:'@someone',description:'Mention someone randomly'})"
},
],
},
{
find: "inQuote:",
replacement: {
match: /\|Clyde/,
replace: "$&|someone"
}
}
],
start() {
this.preSend = addPreSendListener((_, msg) => {
msg.content = msg.content.replace(/@someone/g, () => `<@${randomUser()}>`);
});
},
stop() {
removePreSendListener(this.preSend);
}
});
const randomUser = () => {
const guildId = SelectedGuildStore.getGuildId();
if (guildId === null) {
const dmUsers = ChannelStore.getChannel(SelectedChannelStore.getChannelId()).recipients;
return dmUsers[~~(dmUsers.length * Math.random())];
}
const members = GuildMemberStore.getMembers(guildId);
return members[~~(members.length * Math.random())].userId;
};