aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBerlin <39058370+somerandomcloud@users.noreply.github.com>2022-10-12 18:19:42 +0200
committerGitHub <noreply@github.com>2022-10-12 18:19:42 +0200
commitebe62a17907b980d0c25177f647cb45135475a17 (patch)
treed5ab2e3293ba8ebe4100fb48835f19c2b2385076 /src
parent09b3f6d19b717dc5d3a2e824b02848edeb7f8862 (diff)
downloadVencord-ebe62a17907b980d0c25177f647cb45135475a17.tar.gz
Vencord-ebe62a17907b980d0c25177f647cb45135475a17.tar.bz2
Vencord-ebe62a17907b980d0c25177f647cb45135475a17.zip
FakeClyde (plugin) and sendBotMessage (API addition) (#66)
Co-authored-by: Ven <vendicated@riseup.net>
Diffstat (limited to 'src')
-rw-r--r--src/api/Commands.ts25
-rw-r--r--src/plugins/echo.ts23
2 files changed, 45 insertions, 3 deletions
diff --git a/src/api/Commands.ts b/src/api/Commands.ts
index f7f42e9..ba6c7fa 100644
--- a/src/api/Commands.ts
+++ b/src/api/Commands.ts
@@ -1,5 +1,10 @@
-import { Channel, Guild } from "discord-types/general";
-import { waitFor } from "../webpack";
+import { Channel, Guild, Embed, Message } from "discord-types/general";
+import { lazyWebpack, mergeDefaults } from "../utils/misc";
+import { waitFor, findByProps, find, filters } from "../webpack";
+import type { PartialDeep } from "type-fest";
+
+const createBotMessage = lazyWebpack(filters.byCode('username:"Clyde"'));
+const MessageSender = lazyWebpack(filters.byProps([ "receiveMessage" ]));
export function _init(cmds: Command[]) {
try {
@@ -77,7 +82,21 @@ export function registerCommand(command: Command, plugin: string) {
BUILT_IN.push(command);
}
-export function unregisterCommand(name: string) {
+/**
+ * Send a message as Clyde
+ * @param {string} channelId ID of channel to send message to
+ * @param {Message} message Message to send
+ * @returns {Message}
+ */
+export function sendBotMessage(channelId: string, message: PartialDeep<Message>) {
+ const botMessage = createBotMessage({ channelId, content: "", embeds: [] });
+
+ MessageSender.receiveMessage(channelId, mergeDefaults(message, botMessage));
+
+ return message;
+}
+
+export function unregisterCommand(name: string) { 1;
const idx = BUILT_IN.findIndex(c => c.name === name);
if (idx === -1)
return false;
diff --git a/src/plugins/echo.ts b/src/plugins/echo.ts
new file mode 100644
index 0000000..9e79800
--- /dev/null
+++ b/src/plugins/echo.ts
@@ -0,0 +1,23 @@
+import definePlugin from "../utils/types";
+import { ApplicationCommandInputType, sendBotMessage, findOption, OptionalMessageOption } from "../api/Commands";
+import { ReactionEmoji, Message, MessageReaction, JSMessage } from "discord-types/general";
+
+export default definePlugin({
+ name: "Echo",
+ description: "Uses Clydes message function to send a custom message of your choice (locally)",
+ authors: [{ name: "ICodeInAssembly", id: 702973430449832038n }],
+ dependencies: ["CommandsAPI"],
+ commands: [
+ {
+ name: "echo",
+ description: "Sends a message as Clyde (locally)",
+ options: [OptionalMessageOption],
+ inputType: ApplicationCommandInputType.BOT,
+ execute: (opts, ctx) => {
+ const message = findOption(opts, "message", "");
+
+ sendBotMessage(ctx.channel.id, { content: message });
+ },
+ },
+ ]
+});