Coco机器人插件开发-1

Coco机器人具备强大的扩展接口,非常方便进行二次开发。
支持c#、易语言、vb、vc、php、asp.net等等很多语言的二次开发。

因Coco机器人是使用c#语言开发的,因此这里就先讲c#开发插件。
有c#基础的,建议先观看二次开发中的视频教程,里面简单演示了开发过程。
c#常用开发工具Visual Studio 20xx系列,比如2010、2012、2015,推荐2012以上版本,如果你的计算机性能允许,推荐2015开发。

下面介绍一些插件的工作原理。
一个插件要想被Coco机器人识别,首先必须是一个c#类库项目,最终编译得到的dll文件才能被Coco机器人加载,别的txt、exe等文件是不能被Coco识别的。
另外插件中要有一个“类”是继承Framework.dll中的Plugin的,通俗的讲,你的类库要符合一些接口规范,要具备约定好的接口才能被Coco机器人识别和调用。
打个比方,组装一台电脑,一个机箱只能按照某几种类型的主板,一块主板只能安装某几种类型的CPU、内存、硬盘、显卡等,这些都是事先约定好的。不能把不符合约定的CPU安装到主板上面,那样可能无法安装,也可能导致主板或者CPU损坏。

插件和机器人的关系,也是“约定”好的接口。因此你使用c#开发,只需按照固定的流程开发即可。

有c#基础的,观看视频教程后,阅读上图了解插件工作机制,开发插件非常简单。
如果无c#基础,想用c#开发的,只能先熟悉一下c#的语法,再来开发插件。

附插件示例代码:

using Coco.Framework.SDK;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Coco.Demo
{
    public class Class1 : Plugin
    {
        public Class1()
        {
            this.PluginName = "演示插件";
            this.Description = "插件说明。。。。";
            this.Author = "作者xxx";
        }

        public override bool Start()
        {
            this.ReceiveClusterIM += Class1_ReceiveClusterIM;
            this.ReceiveNormalIM += Class1_ReceiveNormalIM;
            return base.Start();
        }

        private void Class1_ReceiveNormalIM(object sender, ReceiveNormalIMQQEventArgs e)
        {
            if (e.Message == "时间")
            {
                this.SendMessage(e.QQ, "现在时间是:" + DateTime.Now.ToString());
                e.Cancel = true;//这里需要设置,放置后面的插件重复执行。表示已经处理完成了
                return;
            }
        }

        private void Class1_ReceiveClusterIM(object sender, ReceiveClusterIMQQEventArgs e)
        {
            if (e.Message == "时间")
            {
                this.SendClusterMessage(e.Cluster, e.ClusterMember, "现在时间是:" + DateTime.Now.ToString());
                e.Cancel = true;//这里需要设置,防止后面的插件重复执行。表示已经处理完成了
                return;
            }
        }

        public override bool ShowForm()
        {
            new Form1(this).ShowDialog();
            return base.ShowForm();
        }
    }
}

results matching ""

    No results matching ""