From d7f3e3ed79622070e117b3b8f014bce9bba6e4cb Mon Sep 17 00:00:00 2001 From: haibaraguo Date: Sat, 4 Sep 2021 17:33:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0=E6=96=97=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.sum | 26 +- plugin_atri/atri.go | 564 +++++++++++++++++----------------- plugin_qingyunke/nopicture.go | 56 ++++ plugin_qingyunke/qingyunke.go | 11 +- 4 files changed, 356 insertions(+), 301 deletions(-) create mode 100644 plugin_qingyunke/nopicture.go diff --git a/go.sum b/go.sum index 1c49d48e..30ab27da 100644 --- a/go.sum +++ b/go.sum @@ -6,7 +6,6 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/antchfx/htmlquery v1.2.3 h1:sP3NFDneHx2stfNXCKbhHFo8XgNjCACnU/4AO5gWz6M= github.com/antchfx/htmlquery v1.2.3/go.mod h1:B0ABL+F5irhhMWg54ymEZinzMSi0Kt3I2if0BLYa3V0= -github.com/antchfx/xpath v1.1.6 h1:6sVh6hB5T6phw1pFpHRQ+C4bd8sNI+O58flqtg7h0R0= github.com/antchfx/xpath v1.1.6/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= github.com/antchfx/xpath v1.2.0 h1:mbwv7co+x0RwgeGAOHdrKy89GvHaGvxxBtPK0uF9Zr8= github.com/antchfx/xpath v1.2.0/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= @@ -18,7 +17,6 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-ole/go-ole v1.2.5 h1:t4MGB5xEDZvXI+0rMjjsfBsD7yAgp/s9ZDkL1JndXwY= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -41,13 +39,11 @@ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-sqlite3 v1.14.8 h1:gDp86IdQsN/xWjIEmr9MF6o9mpksUgh0fu+9ByFxzIU= github.com/mattn/go-sqlite3 v1.14.8/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -82,25 +78,22 @@ github.com/tidwall/gjson v1.8.1 h1:8j5EE9Hrh3l9Od1OIEDAb7IpezNA20UdRngNAj5N0WU= github.com/tidwall/gjson v1.8.1/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk= github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE= github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.1.0 h1:K3hMW5epkdAVwibsQEfR/7Zj0Qgt4DxtNumTq/VloO8= github.com/tidwall/pretty v1.1.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tklauser/go-sysconf v0.3.8 h1:41Nq9J+pxKud4IQ830J5LlS5nl67dVQC7AuisUooaOU= github.com/tklauser/go-sysconf v0.3.8/go.mod h1:z4zYWRS+X53WUKtBcmDg1comV3fPhdQnzasnIHUoLDU= -github.com/tklauser/numcpus v0.2.3 h1:nQ0QYpiritP6ViFhrKYsiv6VVxOpum2Gks5GhnJbS/8= github.com/tklauser/numcpus v0.2.3/go.mod h1:vpEPS/JC+oZGGQ/My/vJnNsvMDQL6PwOqt8dsCw5j+E= github.com/tklauser/numcpus v0.3.0 h1:ILuRUQBtssgnxw0XXIjKUC56fgnOrFoQQ/4+DeU2biQ= github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= github.com/wdvxdr1123/ZeroBot v1.2.2 h1:BKEy3l80BMrQWpFWaII0AfFMyf9bqrB0TxfWhTdoV58= github.com/wdvxdr1123/ZeroBot v1.2.2/go.mod h1:83nHtG8V5TAxPwH/LCDxLpZk4khIgs29dkr5TBWf7fc= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0 h1:UG21uOlmZabA4fW5i7ZX6bjw1xELEGg/ZLgZq9auk/Q= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= @@ -108,13 +101,14 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210825183410-e898025ed96a h1:bRuuGXV8wwSdGTB+CtJf+FjgO1APK1CoO39T4BN/XBw= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -124,23 +118,24 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71 h1:ikCpsnYR+Ew0vu99XlDp55lGgDJdIMx3f4a18jfse/s= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf h1:2ucpDCmfkl8Bd/FsLtiD653Wf96cW37s+iGx93zsu4k= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78 h1:M8tBwCtWD/cZV9DZpFYRUgaymAYAr+aIUTWzDaM3uPs= golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.5 h1:ouewzE6p+/VEB31YYnTbEJdi8pFqKp4P4n85vwo3DHA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -150,7 +145,6 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= @@ -163,13 +157,11 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C lukechampine.com/uint128 v1.1.1 h1:pnxCASz787iMf+02ssImqk6OLt+Z5QHMoZyUXR4z6JU= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.33.6/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= -modernc.org/cc/v3 v3.33.7 h1:Rvxffgx6LHSpGS6IO8bffSYN1wpPsWHEWY9CV95vpro= modernc.org/cc/v3 v3.33.7/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= modernc.org/cc/v3 v3.33.9/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= modernc.org/cc/v3 v3.33.11 h1:Fc7goiKCzfHvGR4WZbVLWIh/4VhJE2Z31Jkg36Ezp7Q= modernc.org/cc/v3 v3.33.11/go.mod h1:iPJg1pkwXqAV16SNgFBVYmggfMg6xhs+2oiO0vclK3g= modernc.org/ccgo/v3 v3.9.5/go.mod h1:umuo2EP2oDSBnD3ckjaVUXMrmeAw8C8OSICVa0iFf60= -modernc.org/ccgo/v3 v3.9.6 h1:rCjLgu6iRxK2bqq8A0CCOnDP+tdA81LfbBUlM1L6ZIY= modernc.org/ccgo/v3 v3.9.6/go.mod h1:KGOi0NhaT6CO19xeSXcpXBl0OkoD6T1U4dPd633G9Sg= modernc.org/ccgo/v3 v3.10.0/go.mod h1:c0yBmkRFi7uW4J7fwx/JiijwOjeAeR2NoSaRVFPmjMw= modernc.org/ccgo/v3 v3.10.1 h1:iS/P/unYVUpy7aAxy4Xj8BTy8afdyN1P54Ez2LlUmFI= @@ -178,7 +170,6 @@ modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= modernc.org/libc v1.7.13-0.20210308123627-12f642a52bb8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w= modernc.org/libc v1.9.8/go.mod h1:U1eq8YWr/Kc1RWCMFUWEdkTg8OTcfLw2kY8EDwl039w= -modernc.org/libc v1.9.11 h1:QUxZMs48Ahg2F7SN41aERvMfGLY2HU/ADnB9DC4Yts8= modernc.org/libc v1.9.11/go.mod h1:NyF3tsA5ArIjJ83XB0JlqhjTabTCHm9aX4XMPHyQn0Q= modernc.org/libc v1.10.0 h1:VY0vRYW7BMx9vhF3ZvdgmjFOdRrV3EpjUFlRu+5O9FM= modernc.org/libc v1.10.0/go.mod h1:0/Nct1oFfLhjihlkmiJvALxOyV2rlkJ7/OZk1ni+WDQ= @@ -187,7 +178,6 @@ modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6 modernc.org/mathutil v1.4.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.4.1 h1:ij3fYGe8zBF4Vu+g0oT7mB06r8sqGWKuJu1yXeR4by8= modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.0.4 h1:utMBrFcpnQDdNsmM6asmyH/FM9TqLPS7XF7otpJmrwM= modernc.org/memory v1.0.4/go.mod h1:nV2OApxradM3/OVbs2/0OsP6nPfakXpi50C7dcoHXlc= modernc.org/memory v1.0.5 h1:XRch8trV7GgvTec2i7jc33YlUI0RKVDBvZ5eZ5m8y14= modernc.org/memory v1.0.5/go.mod h1:B7OYswTRnfGg+4tDH1t1OeUNnsy2viGTdME4tzd+IjM= diff --git a/plugin_atri/atri.go b/plugin_atri/atri.go index c51c86f6..08732754 100644 --- a/plugin_atri/atri.go +++ b/plugin_atri/atri.go @@ -1,282 +1,282 @@ -/* -Package atri 本文件基于 https://github.com/Kyomotoi/ATRI -为 Golang 移植版,语料、素材均来自上述项目 -本项目遵守 AGPL v3 协议进行开源 -*/ -package atri - -import ( - "math/rand" - "time" - - zero "github.com/wdvxdr1123/ZeroBot" - "github.com/wdvxdr1123/ZeroBot/message" -) - -var ( - // ATRI 所有命令的优先级 - prio = -1 - // ATRI 表情的 codechina 镜像 - res = "https://codechina.csdn.net/u011570312/ZeroBot-Plugin/-/raw/master/plugin_atri/" - // ATRI 的总开关 - enable = true -) - -func init() { // 插件主体 - zero.OnFullMatch("ATRI醒醒", zero.AdminPermission).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - - enable = true - time.Sleep(time.Second * 1) - ctx.SendChain(randText("嗯呜呜……夏生先生……?")) - }) - zero.OnFullMatch("ATRI睡吧", zero.AdminPermission).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - enable = false - time.Sleep(time.Second * 1) - ctx.SendChain(randText("Zzz……Zzz……")) - }) - zero.OnFullMatch("萝卜子", atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - switch rand.Intn(2) { - case 0: - ctx.SendChain(randText("萝卜子是对机器人的蔑称!", "是亚托莉......萝卜子可是对机器人的蔑称")) - case 1: - ctx.SendChain(randRecord("RocketPunch.amr")) - } - }) - zero.OnKeywordGroup([]string{"喜欢", "爱你", "爱", "suki", "daisuki", "すき", "好き", "贴贴", "老婆", "亲一个", "mua"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - if rand.Intn(10) == 0 { - ctx.SendChain(randImage("SUKI.jpg", "SUKI1.jpg", "SUKI2.png")) - }else{ - ctx.SendChain(randText( - "椛椛不是你的电子宠物", - "椛椛不爱你,爬", - "你是个好人,你值得更好的归属", - "椛椛已经有主人了", - )) - } - }) - zero.OnKeywordGroup([]string{"草你妈", "操你妈", "脑瘫", "废柴", "fw", "five", "废物", "战斗", "爬", "爪巴", "sb", "SB", "傻B"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio - 1). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - ctx.SendChain(randImage("FN.jpg", "WQ.jpg", "WQ1.jpg")) - }) - zero.OnKeywordGroup([]string{"早安", "早哇", "早上好", "ohayo", "哦哈哟", "お早う","早好"}, atriSwitch()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - now := time.Now().Hour() - switch { - case now < 6: // 凌晨 - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "zzzz......", - "zzzzzzzz......", - "zzz...好涩哦..zzz....", - "别...不要..zzz..那..zzz..", - "嘻嘻..zzz..呐~..zzzz..", - "...zzz....哧溜哧溜....", - )) - case now >= 6 && now < 9: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "啊......早上好...(哈欠)", - "唔......吧唧...早上...哈啊啊~~~\n早上好......", - "早上好......", - "早上好呜......呼啊啊~~~~", - "啊......早上好。\n昨晚也很激情呢!", - "吧唧吧唧......怎么了...已经早上了么...", - "早上好!", - "......看起来像是傍晚,其实已经早上了吗?", - "早上好......欸~~~脸好近呢", - )) - case now >= 9 && now < 18: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "哼!这个点还早啥,昨晚干啥去了!?", - "熬夜了对吧熬夜了对吧熬夜了对吧???!", - "是不是熬夜是不是熬夜是不是熬夜?!", - )) - case now >= 18 && now < 24: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "早个啥?哼唧!我都准备洗洗睡了!", - "不是...你看看几点了,哼!", - "晚上好哇", - )) - } - }) - zero.OnKeywordGroup([]string{"中午好", "午安","午好"}, atriSwitch()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - now := time.Now().Hour() - if now > 11 && now < 15 { // 中午 - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "午安w", - "午觉要好好睡哦,ATRI会陪伴在你身旁的w", - "嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o", - "睡你午觉去!哼唧!!", - )) - } - }) - zero.OnKeywordGroup([]string{"晚安", "oyasuminasai", "おやすみなさい","晚好"}, atriSwitch()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - now := time.Now().Hour() - switch { - case now < 6: // 凌晨 - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "zzzz......", - "zzzzzzzz......", - "zzz...好涩哦..zzz....", - "别...不要..zzz..那..zzz..", - "嘻嘻..zzz..呐~..zzzz..", - "...zzz....哧溜哧溜....", - )) - case now >= 6 && now < 11: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "你可猝死算了吧!", - "?啊这", - "亲,这边建议赶快去睡觉呢~~~", - "不可忍不可忍不可忍!!为何这还不猝死!!", - )) - case now >= 11 && now < 15: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "午安w", - "午觉要好好睡哦,ATRI会陪伴在你身旁的w", - "嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o", - "睡你午觉去!哼唧!!", - )) - case now >= 15 && now < 19: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "难不成??晚上不想睡觉??现在休息", - "就......挺离谱的...现在睡觉", - "现在还是白天哦,睡觉还太早了", - )) - case now >= 19 && now < 24: - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o", - "......(打瞌睡)", - "呼...呼...已经睡着了哦~...呼......", - "......我、我会在这守着你的,请务必好好睡着", - )) - } - }) - zero.OnKeywordGroup([]string{"高性能", "太棒了", "すごい", "sugoi", "斯国一", "よかった"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "当然,我是高性能的嘛~!", - "小事一桩,我是高性能的嘛", - "怎么样?还是我比较高性能吧?", - "哼哼!我果然是高性能的呢!", - "因为我是高性能的嘛!嗯哼!", - "因为我是高性能的呢!", - "哎呀~,我可真是太高性能了", - "正是,因为我是高性能的", - "是的。我是高性能的嘛♪", - "毕竟我可是高性能的!", - "嘿嘿,我的高性能发挥出来啦♪", - "我果然是很高性能的机器人吧!", - "是吧!谁叫我这么高性能呢!哼哼!", - "交给我吧,有高性能的我陪着呢", - "呣......我的高性能,毫无遗憾地施展出来了......", - )) - }) - zero.OnKeywordGroup([]string{"没事", "没关系", "大丈夫", "还好", "不要紧", "没出大问题", "没伤到哪"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - ctx.SendChain(randText( - "当然,我是高性能的嘛~!", - "没事没事,因为我是高性能的嘛!嗯哼!", - "没事的,因为我是高性能的呢!", - "正是,因为我是高性能的", - "是的。我是高性能的嘛♪", - "毕竟我可是高性能的!", - "那种程度的事不算什么的。\n别看我这样,我可是高性能的", - "没问题的,我可是高性能的", - )) - }) - - zero.OnKeywordGroup([]string{"好吗", "是吗", "行不行", "能不能", "可不可以"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - if rand.Intn(2) == 0 { - ctx.SendChain(randImage("YES.png", "NO.jpg")) - } - }) - zero.OnKeywordGroup([]string{"啊这"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - if rand.Intn(2) == 0 { - ctx.SendChain(randImage("AZ.jpg", "AZ1.jpg")) - } - }) - zero.OnKeywordGroup([]string{"我好了"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - ctx.SendChain(randText("不许好!", "憋回去!")) - }) - zero.OnFullMatchGroup([]string{"?", "?", "¿"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - switch rand.Intn(5) { - case 0: - ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?")) - case 1, 2: - ctx.SendChain(randImage("WH.jpg", "WH1.jpg", "WH2.jpg", "WH3.jpg")) - } - }) - zero.OnKeyword("离谱", atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - switch rand.Intn(5) { - case 0: - ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?")) - case 1, 2: - ctx.SendChain(randImage("WH.jpg")) - } - }) - zero.OnKeyword("答应我", atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). - Handle(func(ctx *zero.Ctx) { - time.Sleep(time.Second * 1) - ctx.SendChain(randText("我无法回应你的请求")) - }) -} - -func randText(text ...string) message.MessageSegment { - length := len(text) - return message.Text(text[rand.Intn(length)]) -} - -func randImage(file ...string) message.MessageSegment { - length := len(file) - return message.Image(res + file[rand.Intn(length)]) -} - -func randRecord(file ...string) message.MessageSegment { - length := len(file) - return message.Record(res + file[rand.Intn(length)]) -} - -// atriSwitch 控制 ATRI 的开关 -func atriSwitch() zero.Rule { - return func(ctx *zero.Ctx) bool { - return enable - } -} - -// atriSleep 凌晨0点到6点,ATRI 在睡觉,不回应任何请求 -func atriSleep() zero.Rule { - return func(ctx *zero.Ctx) bool { - if now := time.Now().Hour(); now >= 1 && now < 6 { - return false - } - return true - } -} +/* +Package atri 本文件基于 https://github.com/Kyomotoi/ATRI +为 Golang 移植版,语料、素材均来自上述项目 +本项目遵守 AGPL v3 协议进行开源 +*/ +package atri + +import ( + "math/rand" + "time" + + zero "github.com/wdvxdr1123/ZeroBot" + "github.com/wdvxdr1123/ZeroBot/message" +) + +var ( + // ATRI 所有命令的优先级 + prio = 2 + // ATRI 表情的 codechina 镜像 + res = "https://codechina.csdn.net/u011570312/ZeroBot-Plugin/-/raw/master/plugin_atri/" + // ATRI 的总开关 + enable = true +) + +func init() { // 插件主体 + zero.OnFullMatch("ATRI醒醒", zero.AdminPermission).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + + enable = true + time.Sleep(time.Second * 1) + ctx.SendChain(randText("嗯呜呜……夏生先生……?")) + }) + zero.OnFullMatch("ATRI睡吧", zero.AdminPermission).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + enable = false + time.Sleep(time.Second * 1) + ctx.SendChain(randText("Zzz……Zzz……")) + }) + zero.OnFullMatch("萝卜子", atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + switch rand.Intn(2) { + case 0: + ctx.SendChain(randText("萝卜子是对机器人的蔑称!", "是亚托莉......萝卜子可是对机器人的蔑称")) + case 1: + ctx.SendChain(randRecord("RocketPunch.amr")) + } + }) + zero.OnKeywordGroup([]string{"喜欢", "爱你", "爱", "suki", "daisuki", "すき", "好き", "贴贴", "老婆", "亲一个", "mua"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + if rand.Intn(10) == 0 { + ctx.SendChain(randImage("SUKI.jpg", "SUKI1.jpg", "SUKI2.png")) + }else{ + ctx.SendChain(randText( + "椛椛不是你的电子宠物", + "椛椛不爱你,爬", + "你是个好人,你值得更好的归属", + "椛椛已经有主人了", + )) + } + }) + zero.OnKeywordGroup([]string{"草你妈", "操你妈", "脑瘫", "废柴", "fw", "five", "废物", "战斗", "爬", "爪巴", "sb", "SB", "傻B"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio - 1). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + ctx.SendChain(randImage("FN.jpg", "WQ.jpg", "WQ1.jpg")) + }) + zero.OnKeywordGroup([]string{"早安", "早哇", "早上好", "ohayo", "哦哈哟", "お早う","早好","早"}, atriSwitch()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + now := time.Now().Hour() + switch { + case now < 6: // 凌晨 + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "zzzz......", + "zzzzzzzz......", + "zzz...好涩哦..zzz....", + "别...不要..zzz..那..zzz..", + "嘻嘻..zzz..呐~..zzzz..", + "...zzz....哧溜哧溜....", + )) + case now >= 6 && now < 9: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "啊......早上好...(哈欠)", + "唔......吧唧...早上...哈啊啊~~~\n早上好......", + "早上好......", + "早上好呜......呼啊啊~~~~", + "啊......早上好。\n昨晚也很激情呢!", + "吧唧吧唧......怎么了...已经早上了么...", + "早上好!", + "......看起来像是傍晚,其实已经早上了吗?", + "早上好......欸~~~脸好近呢", + )) + case now >= 9 && now < 18: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "哼!这个点还早啥,昨晚干啥去了!?", + "熬夜了对吧熬夜了对吧熬夜了对吧???!", + "是不是熬夜是不是熬夜是不是熬夜?!", + )) + case now >= 18 && now < 24: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "早个啥?哼唧!我都准备洗洗睡了!", + "不是...你看看几点了,哼!", + "晚上好哇", + )) + } + }) + zero.OnKeywordGroup([]string{"中午好", "午安","午好"}, atriSwitch()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + now := time.Now().Hour() + if now > 11 && now < 15 { // 中午 + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "午安w", + "午觉要好好睡哦,ATRI会陪伴在你身旁的w", + "嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o", + "睡你午觉去!哼唧!!", + )) + } + }) + zero.OnKeywordGroup([]string{"晚安", "oyasuminasai", "おやすみなさい","晚好"}, atriSwitch()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + now := time.Now().Hour() + switch { + case now < 6: // 凌晨 + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "zzzz......", + "zzzzzzzz......", + "zzz...好涩哦..zzz....", + "别...不要..zzz..那..zzz..", + "嘻嘻..zzz..呐~..zzzz..", + "...zzz....哧溜哧溜....", + )) + case now >= 6 && now < 11: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "你可猝死算了吧!", + "?啊这", + "亲,这边建议赶快去睡觉呢~~~", + "不可忍不可忍不可忍!!为何这还不猝死!!", + )) + case now >= 11 && now < 15: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "午安w", + "午觉要好好睡哦,ATRI会陪伴在你身旁的w", + "嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o", + "睡你午觉去!哼唧!!", + )) + case now >= 15 && now < 19: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "难不成??晚上不想睡觉??现在休息", + "就......挺离谱的...现在睡觉", + "现在还是白天哦,睡觉还太早了", + )) + case now >= 19 && now < 24: + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "嗯哼哼~睡吧,就像平常一样安眠吧~o(≧▽≦)o", + "......(打瞌睡)", + "呼...呼...已经睡着了哦~...呼......", + "......我、我会在这守着你的,请务必好好睡着", + )) + } + }) + zero.OnKeywordGroup([]string{"高性能", "太棒了", "すごい", "sugoi", "斯国一", "よかった"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "当然,我是高性能的嘛~!", + "小事一桩,我是高性能的嘛", + "怎么样?还是我比较高性能吧?", + "哼哼!我果然是高性能的呢!", + "因为我是高性能的嘛!嗯哼!", + "因为我是高性能的呢!", + "哎呀~,我可真是太高性能了", + "正是,因为我是高性能的", + "是的。我是高性能的嘛♪", + "毕竟我可是高性能的!", + "嘿嘿,我的高性能发挥出来啦♪", + "我果然是很高性能的机器人吧!", + "是吧!谁叫我这么高性能呢!哼哼!", + "交给我吧,有高性能的我陪着呢", + "呣......我的高性能,毫无遗憾地施展出来了......", + )) + }) + zero.OnKeywordGroup([]string{"没事", "没关系", "大丈夫", "还好", "不要紧", "没出大问题", "没伤到哪"}, atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + ctx.SendChain(randText( + "当然,我是高性能的嘛~!", + "没事没事,因为我是高性能的嘛!嗯哼!", + "没事的,因为我是高性能的呢!", + "正是,因为我是高性能的", + "是的。我是高性能的嘛♪", + "毕竟我可是高性能的!", + "那种程度的事不算什么的。\n别看我这样,我可是高性能的", + "没问题的,我可是高性能的", + )) + }) + + zero.OnKeywordGroup([]string{"好吗", "是吗", "行不行", "能不能", "可不可以"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + if rand.Intn(2) == 0 { + ctx.SendChain(randImage("YES.png", "NO.jpg")) + } + }) + zero.OnKeywordGroup([]string{"啊这"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + if rand.Intn(2) == 0 { + ctx.SendChain(randImage("AZ.jpg", "AZ1.jpg")) + } + }) + zero.OnKeywordGroup([]string{"我好了"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + ctx.SendChain(randText("不许好!", "憋回去!")) + }) + zero.OnFullMatchGroup([]string{"?", "?", "¿"}, atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + switch rand.Intn(5) { + case 0: + ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?")) + case 1, 2: + ctx.SendChain(randImage("WH.jpg", "WH1.jpg", "WH2.jpg", "WH3.jpg")) + } + }) + zero.OnKeyword("离谱", atriSwitch(), atriSleep()).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + switch rand.Intn(5) { + case 0: + ctx.SendChain(randText("?", "?", "嗯?", "(。´・ω・)ん?", "ん?")) + case 1, 2: + ctx.SendChain(randImage("WH.jpg")) + } + }) + zero.OnKeyword("答应我", atriSwitch(), atriSleep(), zero.OnlyToMe).SetBlock(true).SetPriority(prio). + Handle(func(ctx *zero.Ctx) { + time.Sleep(time.Second * 1) + ctx.SendChain(randText("我无法回应你的请求")) + }) +} + +func randText(text ...string) message.MessageSegment { + length := len(text) + return message.Text(text[rand.Intn(length)]) +} + +func randImage(file ...string) message.MessageSegment { + length := len(file) + return message.Image(res + file[rand.Intn(length)]) +} + +func randRecord(file ...string) message.MessageSegment { + length := len(file) + return message.Record(res + file[rand.Intn(length)]) +} + +// atriSwitch 控制 ATRI 的开关 +func atriSwitch() zero.Rule { + return func(ctx *zero.Ctx) bool { + return enable + } +} + +// atriSleep 凌晨0点到6点,ATRI 在睡觉,不回应任何请求 +func atriSleep() zero.Rule { + return func(ctx *zero.Ctx) bool { + if now := time.Now().Hour(); now >= 1 && now < 6 { + return false + } + return true + } +} diff --git a/plugin_qingyunke/nopicture.go b/plugin_qingyunke/nopicture.go new file mode 100644 index 00000000..4d641dff --- /dev/null +++ b/plugin_qingyunke/nopicture.go @@ -0,0 +1,56 @@ +package qingyunke + +import ( + "fmt" + "io/ioutil" + "log" + "math/rand" + "net/http" + "regexp" +) + +var ( + reImg = `https?://[^"]+?(\.((jpg)|(png)|(jpeg)|(gif)|(bmp)))` +) + +func getPicture() string { + prefix:="https://www.fabiaoqing.com/search/bqb/keyword/%E5%88%AB%E5%8F%91%E5%9B%BE%E7%89%87/type/bq/page/" + url :=fmt.Sprintf("%d.html",rand.Intn(5)+1) + url = prefix + url + log.Println("正在"+url+"寻找图片") + urls := getImgs(url) + fmt.Println(urls) + imageUrl := urls[rand.Intn(len(urls))] + log.Println("取到"+imageUrl) + return imageUrl +} + +func HandleError(err error, why string) { + if err != nil { + fmt.Println(why, err) + } +} + +func getImgs(url string) (urls []string) { + pageStr := GetPageStr(url) + re := regexp.MustCompile(reImg) + results := re.FindAllStringSubmatch(pageStr, -1) + fmt.Printf("共找到%d条结果\n", len(results)) + for _, result := range results { + url := result[0] + urls = append(urls, url) + } + return +} + +func GetPageStr(url string) (pageStr string) { + resp, err := http.Get(url) + HandleError(err, "http.Get url") + defer resp.Body.Close() + // 2.读取页面内容 + pageBytes, err := ioutil.ReadAll(resp.Body) + HandleError(err, "ioutil.ReadAll") + // 字节转字符串 + pageStr = string(pageBytes) + return pageStr +} diff --git a/plugin_qingyunke/qingyunke.go b/plugin_qingyunke/qingyunke.go index d86e5b7f..e566e03e 100644 --- a/plugin_qingyunke/qingyunke.go +++ b/plugin_qingyunke/qingyunke.go @@ -42,7 +42,6 @@ func init() { // 插件主体 } textReply = strings.Replace(textReply,"菲菲","椛椛",-1) if ctx.Event.DetailType == "group" { - ctx.SendChain(message.Text(textReply)) if faceReply != -1 { ctx.SendChain(message.Face(faceReply)) @@ -55,12 +54,21 @@ func init() { // 插件主体 ctx.SendChain(message.Face(faceReply)) } } + default: //频繁触发,不回复 } }) + zero.OnRegex("CQ:image,file=|CQ:face,id=", zero.OnlyToMe,atriSwitch()).SetBlock(false).FirstPriority(). + Handle(func(ctx *zero.Ctx) { + imageUrl := getPicture() + time.Sleep(time.Second * 1) + ctx.SendChain(message.Image(imageUrl)) + }) + + zero.OnFullMatch("启动",zero.SuperUserPermission).SetBlock(true).SetPriority(prio). Handle(func(ctx *zero.Ctx) { @@ -81,6 +89,7 @@ func init() { // 插件主体 }) + // 群空调 }