FakeClyde (plugin) and sendBotMessage (API addition) (#66)

Co-authored-by: Ven <vendicated@riseup.net>
This commit is contained in:
Berlin 2022-10-12 18:19:42 +02:00 committed by GitHub
parent 09b3f6d19b
commit ebe62a1790
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 53 additions and 3 deletions

View file

@ -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;

23
src/plugins/echo.ts Normal file
View file

@ -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 });
},
},
]
});