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 }); }
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(); } }