public async Task StartAsync(CancellationToken cancellationToken)
        {
            ILoggerFactory loggerFactory = new LoggerFactory();
            var            logger        = new Logger <WechatyPuppet>(loggerFactory);

            var PuppetOptions = new Schemas.PuppetOptions()
            {
                // eg http://192.168.2.200:8788
                Endpoint = Configuration["Wechaty_EndPoint"],
                Token    = Configuration["Wechaty_Token"]
            };

            var grpcPuppet = new GrpcPuppet(PuppetOptions, logger, loggerFactory);

            var wechatyOptions = new WechatyOptions()
            {
                Name   = Configuration["Wechaty_Name"],
                Puppet = grpcPuppet,
            };

            bot = new Wechaty(wechatyOptions, loggerFactory);

            await bot.OnScan(WechatyScanEventListener)
            .OnLogin(WechatyLoginEventListener)
            .OnMessage(WechatyMessageEventListenerAsync)
            .OnHeartbeat(WechatyHeartbeatEventListener)
            .Start();
        }
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            using (var application = AbpApplicationFactory.Create <WechatyConsoleModule>(options =>
            {
                options.UseAutofac();
                options.Services.AddLogging(loggingBuilder =>
                {
                    loggingBuilder.AddSerilog(dispose: true);
                });

                // 绑定插件,方式一:加载模块 方式二:加载 dll
                // TODO 这里可以读取所有继承 WechatyPluginBaseModule的模块,动态读取
                options.PlugInSources.AddTypes(
                    typeof(WechatyDingDongModule),
                    typeof(WechatyQRCodeTerminalModule));
            }))
            {
                application.Initialize();

                configuration = application.ServiceProvider.GetRequiredService <IConfiguration>();


                WechatyOptions wechatyOptions = new WechatyOptions()
                {
                    Token    = configuration["Wechaty_Token"],
                    Name     = configuration["Wechaty_Name"],
                    EndPoint = configuration["Wechaty_EndPoint"]
                };

                // 初始化
                bot = application.ServiceProvider.GetRequiredService <IWechatyBotService>();

                // 插件服务注册
                var qrCodePlugin   = application.ServiceProvider.GetRequiredService <QRCodeTerminalAppService>();
                var dingdongPlugin = application.ServiceProvider.GetRequiredService <DingDongAppService>();

                bot.Instance(wechatyOptions);

                // Scan Event Plugin
                qrCodePlugin.QRCodeTerminalAsAscii();

                // Message Event Plugin
                dingdongPlugin.DingDong();

                // 直接监听
                bot.On <EventMessagePayload>(EventEnum.Message, async(eventData) =>
                {
                    var Message = bot.Message();
                    var payload = await Message.Ready(eventData.MessageId);

                    if (payload.Text == "天王盖地虎")
                    {
                        await Message.Say("宝塔镇河妖", payload);
                    }
                });

                await bot.Start();
            }
        }
 public void Instance(WechatyOptions options)
 {
     if (options.Token.IsNullOrEmpty())
     {
         throw new UserFriendlyException("token is empty,please set token!");
     }
     _puppetService.Instance(new PuppetOptions()
     {
         Name     = options.Name,
         Token    = options.Token,
         EndPoint = options.EndPoint,
         Timeout  = options.Timeout
     });
 }
示例#4
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            using (var application = AbpApplicationFactory.Create <WechatyConsoleModule>(options =>
            {
                options.UseAutofac();
                options.Services.AddLogging(loggingBuilder =>
                {
                    loggingBuilder.AddSerilog(dispose: true);
                });

                // 绑定插件,方式一:加载模块 方式二:加载 dll
                // TODO 这里可以读取所有继承 WechatyPluginBaseModule的模块,动态读取
                options.PlugInSources.AddTypes(
                    typeof(WechatyDingDongModule),
                    typeof(WechatyQRCodeTerminalModule),
                    typeof(WechatyPlugInWeatherModule));
            }))
            {
                application.Initialize();

                configuration = application.ServiceProvider.GetRequiredService <IConfiguration>();


                WechatyOptions wechatyOptions = new WechatyOptions()
                {
                    Token    = configuration["Wechaty_Token"],
                    Name     = configuration["Wechaty_Name"],
                    EndPoint = configuration["Wechaty_EndPoint"]
                };

                // Bo
                bot = application.ServiceProvider.GetRequiredService <IWechatyBotService>();

                // 插件服务注册
                //var plugin = application.ServiceProvider.GetRequiredService<WechatyPluginBaseModule>();
                var qrCodePlugin   = application.ServiceProvider.GetRequiredService <QRCodeTerminalAppService>();
                var dingdongPlugin = application.ServiceProvider.GetRequiredService <DingDongAppService>();
                var weatherPlugin  = application.ServiceProvider.GetRequiredService <WeatherPlugInService>();

                bot.Instance(wechatyOptions);

                // Scan Event Plugin
                qrCodePlugin.QRCodeTerminalAsAscii();

                // Message Event Plugin
                dingdongPlugin.DingDong();

                // 直接监听
                bot.On <EventMessagePayload>(EventEnum.Message, async(eventData) =>
                {
                    var Message = bot.Message();
                    var payload = await Message.Ready(eventData.MessageId);

                    if (payload.Text == "天王盖地虎")
                    {
                        await Message.Say("宝塔镇河妖", payload);
                    }
                    if (payload.Text.Contains("天气"))
                    {
                        var city        = payload.Text.Split("天气").Where(x => x != "天气").FirstOrDefault();
                        var weatherInfo = await weatherPlugin.GetWeatherAsync(new PlugIn.Weather.InputDto()
                        {
                            Token = "c7601763d0a241568f75213509012c48",
                            City  = city
                        });
                    }
                });

                await bot.Start();
            }
        }