package Mojo::Weixin::Plugin::Translation; use strict; use Mojo::Util qw(url_escape md5_sum ); our $PRIORITY = 93; sub call { my ($client,$data) = @_; my $api = 'http://api.fanyi.baidu.com/api/trans/vip/translate'; my $appid = $data->{appid} || '20160516000021158'; my $appsecret = $data->{appsecret} || '2QoSmvMuun8btJmsl446'; my $callback = sub{ my($client,$msg) = @_; return if not $msg->allow_plugin; return if $msg->class eq "send" and $msg->from ne "api" and $msg->from ne "irc"; if($msg->content =~ /^翻译\s+(.*)/s){ my $query = $1; return if not $query; $msg->allow_plugin(0); my $salt = time; $client->http_get($api,{json=>1},form=>{ q => $query, from => 'auto', to => 'auto', appid => $appid, salt => $salt, sign => md5_sum($appid . $query . $salt . $appsecret), },sub{ my $json = shift; if( not defined $json ){$msg->reply("翻译失败: api接å£ä¸å¯ç”¨")} elsif(defined $json and exists $json->{error_code}){ $msg->reply("翻译失败: api接å£ä¸å¯ç”¨(" . $json->{error_code} . " " . $json->{error_msg} . ")"); } elsif(defined $json){ $msg->reply( join " ",map {$_->{dst}} @{ $json->{trans_result} } ); } }); } }; $client->on(receive_message=>$callback,send_message=>$callback); } 1;