@relaygram/sdk
v0.1.1
Published
O SDK oficial para criação de plugins para o Relaygram. Extenda a funcionalidade do Relaygram com transformações de mensagens, filtros, integrações com APIs e muito mais.
Maintainers
Readme
🌌 Relaygram SDK
O SDK oficial para criação de plugins para o Relaygram. Extenda a funcionalidade do Relaygram com transformações de mensagens, filtros, integrações com APIs e muito mais.
🚀 Como Começar
Instalação
npm install @relaygram/sdk zod
# ou
yarn add @relaygram/sdk zodCriando seu Primeiro Plugin
Um plugin básico consiste em extender a classe RelaygramPlugin e definir um manifest.
import { RelaygramPlugin, PluginManifest, PluginContext } from "@relaygram/sdk"
import { type Message } from "@mtcute/node"
import { z } from "zod"
export class MeuPlugin extends RelaygramPlugin {
readonly manifest: PluginManifest = {
id: "meu-plugin",
name: "Meu Plugin",
description: "Exemplo de plugin usando o SDK",
version: "1.0.0",
dependencies: [],
author: { name: "Seu Nome", email: "[email protected]" },
license: "MIT",
homepage: "https://github.com/seu-usuario/meu-plugin",
issues: "https://github.com/seu-usuario/meu-plugin/issues",
// Opcional: Configuração via Zod para validação
configValidator: z.object({
prefix: z.string().default("[Relay]")
})
}
async processMessage(message: Message, context: PluginContext): Promise<Message | null> {
const { prefix } = context.config
if (!message.text) return message
return {
...message,
text: `${prefix} ${message.text}`
} as Message
}
}🛠️ Funcionalidades do SDK
🚫 Ignorar Mensagens
Você pode interromper o envio de uma mensagem de duas formas:
context.ignore(): Interrompe imediatamente a execução lançando um erro interno. Ideal para parar o processamento de qualquer lugar no seu código.return this.skip(): Retornanullsinalizando ao executor que a mensagem não deve ser enviada.
🧩 Validação com Zod
O campo configValidator no manifesto permite que o Relaygram valide as configurações passadas ao seu plugin antes de executá-lo, garantindo que context.config sempre tenha os dados no formato esperado.
📦 Exportação para Instalação via URL
Para que seu plugin possa ser instalado diretamente via URL no Relaygram Desktop, seu arquivo JavaScript final deve seguir este padrão de exportação (CommonJS):
// dist/index.js
const { RelaygramPlugin } from "@relaygram/sdk"
class MeuPlugin extends RelaygramPlugin {
// ... implementação
}
module.exports = {
manifest: {
id: "meu-plugin",
// ... restante do manifesto
},
Plugin: MeuPlugin
}Dicas de Publicação
Recomendamos utilizar um bundler (como esbuild ou tsup) para empacotar seu plugin em um único arquivo .js que possa ser acessado publicamente via GitHub Gist, Raw, ou seu próprio servidor.
Feito com ❤️ pela equipe do Relaygram.
