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
- Enviar contenido directamente:
// Enviar contenido: e.reply("¡Hola, mundo!");
- Ya sea para citar la respuesta:
//Si citar la respuesta: e.reply("¡Hola, mundo!", verdadero);//falso significa que no hay comillas, verdadero significa comillas
- 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
- 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 | Sí | Señalo |
recursos/ | Los archivos de recursos, como las imágenes utilizadas por README, se pueden almacenar | Sí | 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) | Sí | Señalo |
.gitignore | No seleccione ciertos archivos o carpetas al actualizar | Sí | 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
- Puede escribir un solo complemento js de acuerdo con el tutorial anterior y colocarlo en las 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