Guía de escritura del complemento Yunzai-Bot

Enseñanza de escritura del complemento Yunzai-Bot

prefacio

  • Necesita la base node.js, necesita usar la base de datos redis,
  • Se recomienda usar VScode para escribir ☞descargar

Un solo complemento de formato js (ejemplo)

  • documentación oicq
  • Cree un nuevo archivo primero y asígnele el nombre Helloworld.js
  • El nombre se puede cambiar. Es mejor no usar chino. Al cambiar el nombre, recuerde cambiar el nombre de la clase a continuación (las mayúsculas son las mismas)

Salida ¡Hola, mundo!

  • ejemplo de código

                'Holamundo' } 
            ] 
        }); 
    };


    //Función 
    asíncrona Helloworld(e) { 
        e.reply("¡Hola, mundo!");//Salida ¡Hola, mundo! 
        //Evitar que el mensaje baje 
        return; 
    }; 
};

Múltiples usos de la función de respuesta

  1. Enviar contenido directamente:
    // Enviar contenido: 
    e.reply("¡Hola, mundo!");
  1. Ya sea para citar la respuesta:
//Si citar la respuesta: 
e.reply("¡Hola, mundo!", verdadero);//falso significa que no hay comillas, verdadero significa comillas
  1. Si el chat grupal retira el mensaje:
//Si el chat grupal recuerda el mensaje: 
e.reply("¡Hola, mundo!", falso, {recallMsg: 5 });//Recuperar después de un máximo de 120 segundos, 0 significa que no se procesa
  1. Ya sea en el usuario:
//Ya sea en el usuario: 
e.reply("¡Hola, mundo!", false, {recallMsg: 0 }, true);//false significa no en el usuario, true significa en el usuario

Cómo utilizar el componente de respuesta

  • ejemplo de código

                'Holamundo' } 
            ] 
        }); 
    };


    //Función 
    asíncrona Helloworld(e) { 
        /** Establece el contexto y el método hei se ejecutará después de recibir el contenido */ 
        this.setContext('hei'); 
        //Envía un mensaje 
        e.reply("1+ 1=?") ; 
    } 

    //Función de respuesta 
    asíncrona hei(e) { 
        //Obtener mensaje 
        let xiaoxi = e.message; 
        //Juzgar mensaje 
        if (xiaoxi == 3) { //Sí 
            //Responder 
            e.reply( "La respuesta es correcta") 
            //Terminar contexto 
            this.finish('hei') 
        } 
        else { //No 
            //Responder 
            e.reply("Respuesta error") 
            //Usar el método de ejecución hei nuevamente 
            this.setContext('hei') 
        }
    } 
};

varios juicios

Estimado... No estimado

Paquete de complemento grande (complemento)

archivo/carpeta efecto es opcional Artículo correspondiente salto
índice.js Importe el complemento js único en las aplicaciones No Señalo
aplicaciones/ La ubicación donde se almacena el complemento único js No Señalo
datos/ La ubicación donde se almacenan los datos del complemento se puede almacenar en la carpeta de datos que viene con Yunzai-Bot Señalo
recursos/ Los archivos de recursos, como las imágenes utilizadas por README, se pueden almacenar Señalo
configuración/ Almacenar archivos de configuración de complementos No Señalo
modelo/ Almacenar el archivo de paquete del complemento No Señalo
guoba.soporte.js Admite la configuración o la información de visualización del complemento de pastel de arroz (si la información de visualización no se agrega, será la descripción en el índice del complemento) Señalo
.gitignore No seleccione ciertos archivos o carpetas al actualizar Señalo

índice

  • Este js importará todos los archivos js en la carpeta de aplicaciones (puede elegir otros)
  • Se pueden agregar sugerencias de carga

Ejemplo de escritura:

// Importar nodo: módulo fs 
importar fs desde nodo: fs 

// Indicación de salida 
logger.info('Reemplazar con la indicación que necesita') 
logger.info('Reemplazar con la indicación que necesita') 
logger.info('Reemplazar con Consejos que necesita') 
//Si necesita más, puede copiar y pegar 
//la información se puede reemplazar con: error de marca de depuración 

//Cargar 
archivos const del complemento = fs.readdirSync('./plugins/nombre del paquete de su complemento/aplicaciones ') .filter(file => file.endsWith('.js')) 

let ret = [] 

archivos.forEach((file) => { 
  ret.push(import(`./apps/${file}`) ) 
} ) 


ret = esperar Promise.allSettled(ret) 

let apps = {} 
for (let i in files) { 
  let name = files[i].replace('.js', '') 

  if (ret[i]. status ! = 'cumplido') { 
      logger.error(`Error al cargar el complemento: ${logger.red(nombre)}`) 
      registrador.error(ret[i].motivo)
      continue 
  } 
  apps[name] = ret[i].value[Object.keys(ret[i].value)[0]] 
} 


export { apps }

aplicaciones

datos

  • Almacene los archivos que el complemento debe almacenar durante mucho tiempo, que se pueden almacenar en la carpeta de datos que viene con Yunzai-Bot

Por ejemplo:

datos/xxxx/xxxx

recursos

  • Archivos de recursos para almacenar complementos

Por ejemplo:

data/README/img 
data/README/document 
data/common 
data/help/help.html 
data/help/help.css

configuración

  • Almacenar archivos de configuración de complementos
  • Por ejemplo:
config/config.yaml 
config/ayuda.yaml

modelo

  • Almacenar el archivo de paquete del complemento

Por ejemplo:

config.js 
ayuda.js 
configuración.js

Soporte crujiente

  • Admite la configuración o la información de visualización del complemento de pastel de arroz (si la información de visualización no se agrega, será la descripción en el índice del complemento)

  • ignorar

  • No seleccione ciertos archivos o carpetas al actualizar

gramática:

Un espacio no coincide con ningún archivo, se puede usar como delimitador y se 
puede escapar con una barra invertida. ¡El comentario del identificador de archivo al principio se puede escapar con una barra invertida 
! El identificador de patrón al principio se niega y el archivo se incluirá de nuevo Si esto se excluye El directorio principal del archivo, utilizando !, no se incluirá de nuevo. Un patrón que se puede escapar con una barra invertida 
/finaliza solo coincide con las carpetas y el contenido dentro de la ruta de esa carpeta, pero no con los archivos 
/patrones que comienzan con elementos y directorios coincidentes 
. Si un patrón no contiene una barra inclinada, coincide con el contenido del ruta actual del archivo .gitignore, si el patrón no está en el archivo .gitignore, es relativo al directorio raíz del proyecto 
** Coincide con directorios de varios niveles, que pueden estar al principio, en el medio o al final 
Genérico coincide con un solo carácter 
* Coincidencias genéricas con cero o varios caracteres 
[] Coincidencia universal con una única lista de caracteres
  • Ejemplo:
# Ignorar todos los archivos en datos 
data/* 
# Ignorar todos los archivos en config 
config/* 
# Ignorar todas las carpetas en recursos/ayuda/temas 
recursos/ayuda/temas/** 
# Seleccionar recursos/ayuda/temas/carpeta de archivo predeterminada 
!recursos/ help/themes/default/ 
# ignorar todos los archivos .txt 
*.txt

Supongo que te gusta

Origin blog.csdn.net/2301_76484015/article/details/130483456
Recomendado
Clasificación