├── .gitignore ├── LICENSE ├── README.md ├── file ├── 0000.ogg ├── JMXhPqI.png ├── gx │ ├── 0.ogg │ ├── 1.ogg │ ├── 10.ogg │ ├── 11.ogg │ ├── 12.ogg │ ├── 13.ogg │ ├── 14.ogg │ ├── 15.ogg │ ├── 16.ogg │ ├── 17.ogg │ ├── 18.ogg │ ├── 19.ogg │ ├── 2.ogg │ ├── 20.ogg │ ├── 21.ogg │ ├── 22.ogg │ ├── 23.ogg │ ├── 24.ogg │ ├── 25.ogg │ ├── 26.ogg │ ├── 27.ogg │ ├── 28.ogg │ ├── 29.ogg │ ├── 3.ogg │ ├── 30.ogg │ ├── 31.ogg │ ├── 32.ogg │ ├── 33.ogg │ ├── 34.ogg │ ├── 35.ogg │ ├── 36.ogg │ ├── 37.ogg │ ├── 38.ogg │ ├── 39.ogg │ ├── 4.ogg │ ├── 40.ogg │ ├── 41.ogg │ ├── 42.ogg │ ├── 43.ogg │ ├── 44.ogg │ ├── 45.ogg │ ├── 46.ogg │ ├── 47.ogg │ ├── 48.ogg │ ├── 49.ogg │ ├── 5.ogg │ ├── 50.ogg │ ├── 51.ogg │ ├── 52.ogg │ ├── 6.ogg │ ├── 7.ogg │ ├── 8.ogg │ └── 9.ogg ├── jigou.ogg ├── kong.ogg ├── suoha.ogg ├── 信仰.ogg ├── 加仓之歌.ogg ├── 回调.ogg ├── 奶子好大.ogg └── 机会.ogg ├── go.mod ├── go.sum └── main.go /.gitignore: -------------------------------------------------------------------------------- 1 | # Binaries for programs and plugins 2 | *.exe 3 | *.exe~ 4 | *.dll 5 | *.so 6 | *.dylib 7 | 8 | # Test binary, built with `go test -c` 9 | *.test 10 | 11 | # Output of the go coverage tool, specifically when used with LiteIDE 12 | *.out 13 | 14 | # Dependency directories (remove the comment below to include it) 15 | # vendor/ 16 | .DS_Store 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 BNB48 Club® 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Peach 2 | 3 | This robot runs at [@XiangPeachBot](https://t.me/XiangPeachBot) 4 | 5 | ## install 6 | 7 | ```bash 8 | go get github.com/BNB48Club/Peach 9 | ``` 10 | 11 | ## run 12 | 13 | ```bash 14 | # linux 15 | token=telegram-bot-api-token Peach -d 16 | 17 | # windows 18 | set token=telegram-bot-api-token 19 | Peach -d 20 | ``` 21 | -------------------------------------------------------------------------------- /file/0000.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/0000.ogg -------------------------------------------------------------------------------- /file/JMXhPqI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/JMXhPqI.png -------------------------------------------------------------------------------- /file/gx/0.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/0.ogg -------------------------------------------------------------------------------- /file/gx/1.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/1.ogg -------------------------------------------------------------------------------- /file/gx/10.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/10.ogg -------------------------------------------------------------------------------- /file/gx/11.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/11.ogg -------------------------------------------------------------------------------- /file/gx/12.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/12.ogg -------------------------------------------------------------------------------- /file/gx/13.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/13.ogg -------------------------------------------------------------------------------- /file/gx/14.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/14.ogg -------------------------------------------------------------------------------- /file/gx/15.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/15.ogg -------------------------------------------------------------------------------- /file/gx/16.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/16.ogg -------------------------------------------------------------------------------- /file/gx/17.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/17.ogg -------------------------------------------------------------------------------- /file/gx/18.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/18.ogg -------------------------------------------------------------------------------- /file/gx/19.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/19.ogg -------------------------------------------------------------------------------- /file/gx/2.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/2.ogg -------------------------------------------------------------------------------- /file/gx/20.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/20.ogg -------------------------------------------------------------------------------- /file/gx/21.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/21.ogg -------------------------------------------------------------------------------- /file/gx/22.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/22.ogg -------------------------------------------------------------------------------- /file/gx/23.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/23.ogg -------------------------------------------------------------------------------- /file/gx/24.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/24.ogg -------------------------------------------------------------------------------- /file/gx/25.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/25.ogg -------------------------------------------------------------------------------- /file/gx/26.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/26.ogg -------------------------------------------------------------------------------- /file/gx/27.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/27.ogg -------------------------------------------------------------------------------- /file/gx/28.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/28.ogg -------------------------------------------------------------------------------- /file/gx/29.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/29.ogg -------------------------------------------------------------------------------- /file/gx/3.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/3.ogg -------------------------------------------------------------------------------- /file/gx/30.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/30.ogg -------------------------------------------------------------------------------- /file/gx/31.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/31.ogg -------------------------------------------------------------------------------- /file/gx/32.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/32.ogg -------------------------------------------------------------------------------- /file/gx/33.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/33.ogg -------------------------------------------------------------------------------- /file/gx/34.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/34.ogg -------------------------------------------------------------------------------- /file/gx/35.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/35.ogg -------------------------------------------------------------------------------- /file/gx/36.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/36.ogg -------------------------------------------------------------------------------- /file/gx/37.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/37.ogg -------------------------------------------------------------------------------- /file/gx/38.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/38.ogg -------------------------------------------------------------------------------- /file/gx/39.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/39.ogg -------------------------------------------------------------------------------- /file/gx/4.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/4.ogg -------------------------------------------------------------------------------- /file/gx/40.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/40.ogg -------------------------------------------------------------------------------- /file/gx/41.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/41.ogg -------------------------------------------------------------------------------- /file/gx/42.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/42.ogg -------------------------------------------------------------------------------- /file/gx/43.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/43.ogg -------------------------------------------------------------------------------- /file/gx/44.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/44.ogg -------------------------------------------------------------------------------- /file/gx/45.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/45.ogg -------------------------------------------------------------------------------- /file/gx/46.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/46.ogg -------------------------------------------------------------------------------- /file/gx/47.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/47.ogg -------------------------------------------------------------------------------- /file/gx/48.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/48.ogg -------------------------------------------------------------------------------- /file/gx/49.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/49.ogg -------------------------------------------------------------------------------- /file/gx/5.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/5.ogg -------------------------------------------------------------------------------- /file/gx/50.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/50.ogg -------------------------------------------------------------------------------- /file/gx/51.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/51.ogg -------------------------------------------------------------------------------- /file/gx/52.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/52.ogg -------------------------------------------------------------------------------- /file/gx/6.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/6.ogg -------------------------------------------------------------------------------- /file/gx/7.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/7.ogg -------------------------------------------------------------------------------- /file/gx/8.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/8.ogg -------------------------------------------------------------------------------- /file/gx/9.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/gx/9.ogg -------------------------------------------------------------------------------- /file/jigou.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/jigou.ogg -------------------------------------------------------------------------------- /file/kong.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/kong.ogg -------------------------------------------------------------------------------- /file/suoha.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/suoha.ogg -------------------------------------------------------------------------------- /file/信仰.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/信仰.ogg -------------------------------------------------------------------------------- /file/加仓之歌.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/加仓之歌.ogg -------------------------------------------------------------------------------- /file/回调.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/回调.ogg -------------------------------------------------------------------------------- /file/奶子好大.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/奶子好大.ogg -------------------------------------------------------------------------------- /file/机会.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/48Club/Peach/51548d2eb5d5583eda14bbea8cacab1f3c0a8a36/file/机会.ogg -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- 1 | module github.com/BNB48Club/Peach 2 | 3 | go 1.16 4 | 5 | require ( 6 | github.com/CodyGuo/godaemon v0.0.0-20200413142854-c36b39fdd071 7 | github.com/google/uuid v1.3.0 8 | gopkg.in/telebot.v3 v3.0.0 9 | ) 10 | -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | github.com/CodyGuo/godaemon v0.0.0-20200413142854-c36b39fdd071 h1:GFI7Rs86D4qip+tBvMcv0ux5kHbngC0rNWfgpTeVoAQ= 2 | github.com/CodyGuo/godaemon v0.0.0-20200413142854-c36b39fdd071/go.mod h1:VBC/JvjvRkcgE7wMjDJs7Y94Ta6KSpCWDquUKW+WbJo= 3 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 4 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 5 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 6 | github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= 7 | github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= 8 | github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= 9 | github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= 10 | github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= 11 | github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= 12 | github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= 13 | github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= 14 | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 15 | github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= 16 | github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 17 | github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 18 | github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= 19 | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 20 | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= 21 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 22 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 23 | github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= 24 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 25 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 26 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= 27 | github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= 28 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 29 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 30 | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 31 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 32 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 33 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 34 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 35 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 36 | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 37 | golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 38 | golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 39 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 40 | golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 41 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 42 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 43 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 44 | gopkg.in/telebot.v3 v3.0.0 h1:UgHIiE/RdjoDi6nf4xACM7PU3TqiPVV9vvTydCEnrTo= 45 | gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= 46 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 47 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 48 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= 49 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 50 | -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | /* 4 | * Contact 5 | * Email: pr@notodom.com 6 | * Sponsor 7 | * ETH/BSC: 0x8888865ca6D38365d49e63098ceB37D48Fe88888 8 | **/ 9 | 10 | import ( 11 | "bytes" 12 | "encoding/json" 13 | "fmt" 14 | "io/ioutil" 15 | "log" 16 | "math/rand" 17 | "net/http" 18 | "os" 19 | "strconv" 20 | "strings" 21 | "time" 22 | 23 | _ "github.com/CodyGuo/godaemon" 24 | "github.com/google/uuid" 25 | tb "gopkg.in/telebot.v3" 26 | ) 27 | 28 | func main() { 29 | 30 | rawurl := fmt.Sprintf("https://raw.githubusercontent.com/48Club/Peach/%s/file/", GetSha()) 31 | 32 | b, err := tb.NewBot(tb.Settings{ 33 | Token: os.Getenv("token"), 34 | Poller: &tb.LongPoller{Timeout: 10 * time.Second}, 35 | }) 36 | 37 | if err != nil { 38 | log.Fatal(err) 39 | return 40 | } 41 | answer := func(q *tb.Query, results tb.Results, ct int) error { 42 | results[0].SetResultID(strconv.Itoa(0)) 43 | return b.Answer(q, &tb.QueryResponse{ 44 | Results: results, 45 | CacheTime: ct, 46 | }) 47 | } 48 | inogglist := func(q string, ogglist map[string][]string) (bool, []string) { 49 | for k, v := range ogglist { 50 | if strings.EqualFold(q, k) { 51 | return true, v 52 | } 53 | } 54 | return false, []string{} 55 | } 56 | 57 | b.Handle(tb.OnQuery, func(cont tb.Context) error { 58 | q := cont.Query() 59 | results := make(tb.Results, 1) 60 | isinogg, oggv := inogglist(q.Text, ogglist) 61 | gxq := strings.Split(strings.ToUpper(q.Text), ".GX") 62 | switch true { 63 | case strings.ToUpper(q.Text) == "HHHH": 64 | results[0] = &tb.PhotoResult{ 65 | URL: fmt.Sprintf("%sJMXhPqI.png", rawurl), 66 | ThumbURL: fmt.Sprintf("%sJMXhPqI.png", rawurl), 67 | Caption: "`Pig God: 我发火龙都累死了`", 68 | ResultBase: tb.ResultBase{ParseMode: tb.ModeMarkdownV2}, 69 | } 70 | return answer(q, results, 60) 71 | 72 | case isinogg: 73 | results[0] = &tb.VoiceResult{ 74 | URL: fmt.Sprintf("%s%s", rawurl, oggv[0]), 75 | Title: oggv[1], 76 | } 77 | return answer(q, results, 60) 78 | 79 | case len(gxq) == 2 && gxq[0] == "": 80 | gxindex := int64(0) 81 | if gxq[1] == "" { 82 | rand.Seed(time.Now().UnixNano()) 83 | gxindex = rand.Int63n(int64(len(gxlist))) 84 | } else { 85 | var err error 86 | gxindex, err = strconv.ParseInt(gxq[1], 10, 64) 87 | if err != nil || gxindex > int64(len(gxlist)-1) { 88 | results[0] = &tb.ArticleResult{ 89 | Title: "暂不支持该货币,", Text: "嘤嘤嘤QAQ", 90 | } 91 | return answer(q, results, 1) 92 | } 93 | } 94 | results[0] = &tb.VoiceResult{ 95 | URL: fmt.Sprintf("%sgx/%d.ogg", rawurl, gxindex), 96 | Title: gxlist[gxindex], 97 | } 98 | return answer(q, results, 1) 99 | 100 | } 101 | 102 | queryText := strings.Split(strings.ToUpper(q.Text), " ") 103 | resultsText := "当查询词为空时,默认查询 BTC 汇率" 104 | if len(queryText) == 0 { 105 | queryText = append(queryText, "BTC") 106 | } 107 | if len(queryText) == 1 { 108 | if queryText[0] == "" { 109 | queryText[0] = "BTC" 110 | } else { 111 | resultsText = fmt.Sprintf("查询当前 %s 汇率,继续空格输入数量", queryText[0]) 112 | } 113 | queryText = append(queryText, "1") 114 | } else if len(queryText) == 2 { 115 | resultsText = fmt.Sprintf("当前 %s 个 %s 市价", queryText[1], queryText[0]) 116 | } else { 117 | return nil 118 | } 119 | usdp := getUSDPrice() 120 | var otherp float64 121 | for _, v := range []string{"btcusd", " gbpusd", " eurusd", " xrpusd", " ltcusd", " ethusd", " bchusd", " paxusd", " xlmusd", " linkusd", " omgusd", " usdcusd"} { 122 | if fmt.Sprintf("%susd", strings.ToLower(queryText[0])) == v { 123 | otherp = getBitstampPrice(v) 124 | break 125 | } 126 | } 127 | if otherp == 0 { 128 | otherp = getBinancePrice(queryText[0]) 129 | } 130 | if otherp == 0 || queryText[0] == "USDT" { 131 | otherp = getCoingeckoPrice(strings.ToLower(queryText[0])) 132 | } 133 | 134 | if usdp > 0 && otherp > 0 { 135 | count, err := strconv.ParseFloat(queryText[1], 64) 136 | if err != nil { 137 | results[0] = &tb.ArticleResult{Title: "货币数量输入错误,", Text: "嘤嘤嘤QAQ"} 138 | goto errto 139 | } 140 | var ( 141 | bc2cp float64 142 | userinfo string 143 | sellT string 144 | jumpU bool 145 | ) 146 | for _, v := range []string{"usdt", "btc", "eth"} { 147 | if strings.ToLower(queryText[0]) == v { 148 | bc2cp, userinfo, sellT = getBinanceC2CPrice(queryText[0], usdp*otherp*count) 149 | break 150 | } 151 | } 152 | if jumpU = bc2cp == 0; jumpU { 153 | bc2cp, userinfo, sellT = getBinanceC2CPrice("USDT", usdp*otherp*count) 154 | } 155 | cnyp := ftostring(usdp * otherp * count) 156 | usdtp := ftostring(otherp * count) 157 | text := fmt.Sprintf("%s %s ≈ %s USD ≈ %s CNY", queryText[1], queryText[0], usdtp, cnyp) 158 | var lines [][]tb.InlineButton 159 | switch_inline_query := []tb.InlineButton{{Text: "我也试试", InlineQuery: fmt.Sprintf("%s %s", queryText[0], queryText[1])}} 160 | lines = [][]tb.InlineButton{} 161 | if bc2cp > 0 { 162 | if jumpU { 163 | text += fmt.Sprintf("\n\nPexPay: %s => USDT ≈> %.2f CNY", queryText[0], bc2cp*count*otherp) 164 | } else { 165 | text += fmt.Sprintf("\n\nPexPay: %s ≈> %.2f CNY", queryText[0], bc2cp*count) 166 | } 167 | thisUuid := uuid.NewString() 168 | calllist[thisUuid] = []string{text, userinfo, "SELL", fmt.Sprintf("%d", q.Sender.ID), fmt.Sprintf("%s %s", queryText[0], queryText[1]), sellT} 169 | lines = append(lines, []tb.InlineButton{{Text: "查询场外", Data: thisUuid}}) 170 | } 171 | // text += "\n\n🪧 底部常驻广告位招租 @elrepo" 172 | lines = append(lines, switch_inline_query) 173 | results[0] = &tb.ArticleResult{ 174 | Title: fmt.Sprintf(resultsText+" %s USD", usdtp), 175 | Text: text, 176 | ResultBase: tb.ResultBase{ 177 | ReplyMarkup: &tb.ReplyMarkup{ 178 | InlineKeyboard: lines, 179 | }, 180 | }, 181 | } 182 | } else { 183 | results[0] = &tb.ArticleResult{Title: "暂不支持该货币,", Text: "嘤嘤嘤QAQ"} 184 | } 185 | errto: 186 | results[0].SetResultID(strconv.Itoa(0)) 187 | return answer(q, results, 1) 188 | 189 | }) 190 | b.Handle(tb.OnCallback, func(cont tb.Context) error { 191 | call := cont.Callback() 192 | switch_inline_query := []tb.InlineButton{{Text: "我也试试", InlineQuery: ""}} 193 | data, ok := calllist[call.Data] 194 | var err error 195 | if !ok { 196 | _ = b.Respond(call, &tb.CallbackResponse{ 197 | Text: "报价失效咯~ 请重新发起查询", 198 | ShowAlert: true, 199 | }) 200 | _, err = b.EditReplyMarkup(call, &tb.ReplyMarkup{ 201 | InlineKeyboard: [][]tb.InlineButton{switch_inline_query}, 202 | }) 203 | return err 204 | } 205 | if len(data) == 0 { 206 | return nil 207 | } 208 | switch data[2] { 209 | case "SELL": 210 | if fmt.Sprintf("%d", call.Sender.ID) != data[3] { // 此报价不是你发起的哦~ 211 | return b.Respond(call, &tb.CallbackResponse{ 212 | Text: "此报价不是你发起的哦~", 213 | ShowAlert: true, 214 | }) 215 | } 216 | calllist[call.Data] = []string{} 217 | userNo := data[1] 218 | rt := "" 219 | if userInfo := getUserInfo(userNo); userInfo.Code == "000000" { 220 | rt += fmt.Sprintf("\n商户: %s (保证金 %.2f %s)", userInfo.Data.UserDetailVo.NickName, userInfo.Data.UserDetailVo.DepositAmount, userInfo.Data.UserDetailVo.DepositCurrency) 221 | KYC := []string{} 222 | cKyc := func(v bool, c string) { 223 | if v { 224 | KYC = append(KYC, c) 225 | } 226 | } 227 | cKyc(userInfo.Data.UserDetailVo.EmailVerified, "邮箱") 228 | cKyc(userInfo.Data.UserDetailVo.BindMobile, "手机") 229 | cKyc(userInfo.Data.UserDetailVo.KycVerified, "身份认证") 230 | rt += fmt.Sprintf("\nKYC: %s", strings.Join(KYC[:], "+")) 231 | rt += fmt.Sprintf("\n方式: %s", data[5]) 232 | rt += fmt.Sprintf("\n成交: 总 %.f 单, 月 %.f 单, 成交率%.2f%%", userInfo.Data.UserDetailVo.UserStatsRet.CompletedOrderNum, userInfo.Data.UserDetailVo.UserStatsRet.CompletedOrderNumOfLatest30day, userInfo.Data.UserDetailVo.UserStatsRet.FinishRateLatest30day*100) 233 | rt += fmt.Sprintf("\n付款: 平均 %.2f 分放行, %.2f 分付款", userInfo.Data.UserDetailVo.UserStatsRet.AvgReleaseTimeOfLatest30day/60, userInfo.Data.UserDetailVo.UserStatsRet.AvgPayTimeOfLatest30day/60) 234 | rt += fmt.Sprintf("\n账户: 已注册 %.f 天; 首次交易于 %.f 天前", userInfo.Data.UserDetailVo.UserStatsRet.RegisterDays, userInfo.Data.UserDetailVo.UserStatsRet.FirstOrderDays) 235 | line := []tb.InlineButton{{Text: "前往交易", URL: fmt.Sprintf("https://www.pexpay.com/zh-CN/advertiserDetail?advertiserNo=%s", data[1])}} 236 | switch_inline_query = []tb.InlineButton{{Text: "我也试试", InlineQuery: data[4]}} 237 | if _, err = b.Edit(call, data[0]+rt+"\n\n🪧 捐赠联系 @elrepo", &tb.ReplyMarkup{ 238 | InlineKeyboard: [][]tb.InlineButton{line, switch_inline_query}, 239 | }); err == nil { 240 | delete(calllist, call.Data) 241 | } 242 | } 243 | } 244 | calllist[call.Data] = data 245 | return err 246 | }) 247 | b.Start() 248 | } 249 | 250 | func ftostring(f float64) string { 251 | c := 2 252 | if f < 100 { 253 | c = 4 254 | } 255 | return strconv.FormatFloat(f, 'f', c, 64) 256 | } 257 | 258 | type usddata struct { 259 | Currency string `json:"currency"` 260 | Rates map[string](string) `json:"rates"` 261 | } 262 | 263 | type usdres struct { 264 | Data usddata `json:"data"` 265 | } 266 | 267 | func getUSDPrice() float64 { 268 | var ress usdres 269 | if err := httpGet("https://api.coinbase.com/v2/exchange-rates?currency=USD", &ress); err == nil { 270 | if usdPrice, err := strconv.ParseFloat(ress.Data.Rates["CNY"], 64); err == nil { 271 | return usdPrice 272 | } 273 | } 274 | return 0 275 | } 276 | 277 | func getBinancePrice(s string) float64 { 278 | if s == "USD" { 279 | return 1 280 | } 281 | var price float64 282 | var ress [][]interface{} 283 | if err := httpGet(fmt.Sprintf("https://api.binance.com/api/v3/klines?symbol=%sUSDT&interval=1M&limit=1", s), &ress); !(err != nil || len(ress) < 1 || len(ress[0]) < 5) { 284 | if price, err = strconv.ParseFloat(ress[0][4].(string), 64); err == nil { 285 | return price 286 | } 287 | } 288 | return 0 289 | } 290 | 291 | type TradeInfo struct { 292 | Code string 293 | Data []TradeData 294 | Total float64 295 | } 296 | type TradeData struct { 297 | AdDetailResp AdDetailResp 298 | AdvertiserVo AdvertiserVo 299 | } 300 | type AdDetailResp struct { 301 | Price string 302 | TradeMethods []TradeMethods 303 | } 304 | type AdvertiserVo struct { 305 | UserNo string 306 | } 307 | type TradeMethods struct { 308 | TradeMethodShortName string 309 | } 310 | 311 | func getBinanceC2CPrice(s string, amount float64) (float64, string, string) { 312 | jsonStr := []byte(fmt.Sprintf(`{"page":1,"rows":10,"payTypes":[],"classifies":[],"asset":"%s","tradeType":"SELL","fiat":"CNY","publisherType":null,"filter":{"payTypes":[]},"transAmount":"%.2f"}`, s, amount)) 313 | 314 | reqest, _ := http.NewRequest("POST", "https://www.pexpay.com/bapi/c2c/v1/friendly/c2c/ad/search", bytes.NewBuffer(jsonStr)) 315 | reqest.Header.Add("content-type", "application/json") 316 | reqest.Header.Add("lang", "zh-CN") 317 | 318 | if resp, err := http.DefaultClient.Do(reqest); err == nil { 319 | if body, err := ioutil.ReadAll(resp.Body); err == nil { 320 | defer resp.Body.Close() 321 | var tradeInfo TradeInfo 322 | if err := json.Unmarshal(body, &tradeInfo); err == nil && tradeInfo.Code == "000000" && tradeInfo.Total > 0 { 323 | first := tradeInfo.Data[0] 324 | if price, err := strconv.ParseFloat(first.AdDetailResp.Price, 64); err == nil { 325 | userNo := first.AdvertiserVo.UserNo 326 | bType := []string{} 327 | for _, v := range first.AdDetailResp.TradeMethods { 328 | bType = append(bType, v.TradeMethodShortName) 329 | 330 | } 331 | return price, userNo, strings.Join(bType[:], "+") 332 | } 333 | } 334 | } 335 | } 336 | return 0.0, "", "" 337 | } 338 | 339 | type UserInfo struct { 340 | Code string 341 | Data UserData 342 | } 343 | type UserData struct { 344 | UserDetailVo UserDetailVo 345 | } 346 | type UserDetailVo struct { 347 | NickName string 348 | DepositAmount float64 349 | DepositCurrency string 350 | EmailVerified bool 351 | BindMobile bool 352 | KycVerified bool 353 | UserStatsRet UserStatsRet 354 | } 355 | type UserStatsRet struct { 356 | RegisterDays float64 357 | FirstOrderDays float64 358 | AvgReleaseTimeOfLatest30day float64 359 | AvgPayTimeOfLatest30day float64 360 | FinishRateLatest30day float64 361 | CompletedOrderNum float64 362 | CompletedOrderNumOfLatest30day float64 363 | } 364 | 365 | func getUserInfo(userNo string) UserInfo { 366 | var userInfo UserInfo 367 | if resp, err0 := http.Get(fmt.Sprintf("https://www.pexpay.com/bapi/c2c/v1/friendly/c2c/user/profile-and-ads-list?userNo=%s", userNo)); err0 == nil { 368 | if body, err := ioutil.ReadAll(resp.Body); err == nil { 369 | defer resp.Body.Close() 370 | _ = json.Unmarshal(body, &userInfo) 371 | } 372 | } 373 | return userInfo 374 | } 375 | 376 | type SymbolMap struct { 377 | Id string `json:"id"` 378 | Symbol string `json:"symbol"` 379 | Name string `json:"name"` 380 | } 381 | 382 | var coingecko = []SymbolMap{} 383 | var mapUpdateTime int64 384 | 385 | func getCoingeckoPrice(s string) float64 { 386 | if time.Now().Unix()-mapUpdateTime > 60*60 { 387 | if err := httpGet("https://api.coingecko.com/api/v3/coins/list", &coingecko); err != nil || len(coingecko) < 1 { 388 | return 0 389 | } 390 | mapUpdateTime = time.Now().Unix() 391 | } 392 | var id string 393 | for _, v := range coingecko { 394 | if v.Symbol == s { 395 | id = v.Id 396 | break 397 | } 398 | } 399 | var price map[string]map[string]float64 400 | if err := httpGet(fmt.Sprintf("https://api.coingecko.com/api/v3/simple/price?ids=%s&vs_currencies=usd", id), &price); err == nil { 401 | return price[id]["usd"] 402 | } 403 | return 0 404 | } 405 | 406 | func getBitstampPrice(s string) float64 { 407 | var price map[string]string 408 | if err := httpGet(fmt.Sprintf("https://www.bitstamp.net/api/v2/ticker_hour/%s/", s), &price); err == nil { 409 | if v, ok := price["last"]; ok { 410 | if p, err := strconv.ParseFloat(v, 64); err == nil { 411 | return p 412 | } 413 | } 414 | } 415 | return 0 416 | } 417 | 418 | func httpGet(uri string, v interface{}) error { 419 | var err error 420 | var resp *http.Response 421 | if resp, err = http.Get(uri); err == nil { 422 | var body []byte 423 | if body, err = ioutil.ReadAll(resp.Body); err == nil { 424 | resp.Body.Close() 425 | err = json.Unmarshal(body, &v) 426 | } 427 | } 428 | return err 429 | } 430 | 431 | func GetSha() string { 432 | res := []map[string]interface{}{} 433 | err := httpGet("https://api.github.com/repos/48Club/Peach/commits", &res) 434 | if err != nil { 435 | log.Fatal(err.Error()) 436 | } 437 | return res[0]["sha"].(string) 438 | } 439 | 440 | var ( 441 | calllist = map[string][]string{} 442 | ogglist = map[string][]string{ 443 | "0000": {"0000.ogg", "归零"}, 444 | ".kong": {"kong.ogg", "直接重仓空进去"}, 445 | ".suoha": {"suoha.ogg", "已经在谷底了,梭!"}, 446 | ".jg": {"jigou.ogg", "机构进场了,抄底!"}, 447 | ".jc": {"加仓之歌.ogg", "买的多,赢得多,可以单车变摩托!"}, 448 | ".xinyang": {"信仰.ogg", "你没有信仰的话,你就会错过暴富的机会,懂不懂啊?"}, 449 | ".jihui": {"机会.ogg", "你还要错过多少次机会?人生会给你多少次机会?拿出胆子来,抄底!操!"}, 450 | ".huit": {"回调.ogg", "现在回调,是给你最后的机会加仓了,知不知道啊?"}, 451 | ".naizi": {"奶子好大.ogg", "我去泡妞了,啊~ 她们奶子好大!!!"}, 452 | } 453 | gxlist = []string{ 454 | /* 0 */ "八点尊", 455 | /* 1 */ "把那个消息撤回去", 456 | /* 2 */ "不是我针对谁,在座的各位都是我儿子", 457 | /* 3 */ "不要放DJ了,几十岁的人了", 458 | /* 4 */ "不要聊了先上DJ", 459 | /* 5 */ "不要挑战权威", 460 | /* 6 */ "道不同不相为谋", 461 | /* 7 */ "等下你会被莫名其妙移出该群的", 462 | /* 8 */ "等着猝死把,我先睡了么么哒", 463 | /* 9 */ "搞的自己很忙一样", 464 | /* 10 */ "给钱给钱,红包过来什么都有", 465 | /* 11 */ "滚一边去", 466 | /* 12 */ "几百条消息没有一条是关于我的", 467 | /* 13 */ "加个微信有这么难嘛", 468 | /* 14 */ "来到这个群不要泡群里面的妹子", 469 | /* 15 */ "来点DJ啊", 470 | /* 16 */ "老子听到我的语音就烦", 471 | /* 17 */ "没有,滚", 472 | /* 18 */ "每次喔都会找话题插一下", 473 | /* 19 */ "你何德何能让我加你好友啊", 474 | /* 20 */ "你们聊啊,我插不了嘴的", 475 | /* 21 */ "你们这群表面群友", 476 | /* 22 */ "你能不能不要在这里恶心啊", 477 | /* 23 */ "泡一杯红茶来喝一下", 478 | /* 24 */ "去跟张学友称兄掉地啊", 479 | /* 25 */ "群里的妹子有没有甜言蜜语的", 480 | /* 26 */ "群里面只有妹子能艾特我", 481 | /* 27 */ "群主把楼上这个叼毛踢掉", 482 | /* 28 */ "人家说要个鸡脖你给不给啊?", 483 | /* 29 */ "睡觉啦,不要在群里面发我的语音", 484 | /* 30 */ "天籁", 485 | /* 31 */ "晚上发点片片看啊", 486 | /* 32 */ "文明,wenming", 487 | /* 33 */ "我今晚那个炒米粉赚回来了", 488 | /* 34 */ "我们群主好搞笑啊", 489 | /* 35 */ "我是做鸭的", 490 | /* 36 */ "我说你们的微信小助手啊贤", 491 | /* 37 */ "下面我给大家带来一首英文歌", 492 | /* 38 */ "先来首DJ有那么难嘛", 493 | /* 39 */ "小姐姐我还是单身喔", 494 | /* 40 */ "笑死我了tmd,哎呦", 495 | /* 41 */ "新进群的妹子加我一下", 496 | /* 42 */ "一个文明的聊天群搞的乌鸦胀气的", 497 | /* 43 */ "有没有还有煞笔没有睡觉啊,出来聊天啊", 498 | /* 44 */ "有没有人知道那个当当当是什么音乐", 499 | /* 45 */ "在bb老子踢你", 500 | /* 46 */ "早上好兄弟姐妹们", 501 | /* 47 */ "这个群是怎么了,是感情纠纷", 502 | /* 48 */ "这是人说的话吗", 503 | /* 49 */ "真不知道你们一天到晚聊什么", 504 | /* 50 */ "左右为难啊", 505 | /* 51 */ "DJ在哪里不知道打电话找他", 506 | /* 52 */ "duang~", 507 | } 508 | ) 509 | --------------------------------------------------------------------------------