用wxBot和图灵机器人 微信 javaAPI怎样实现微信群聊机器人

用wxBot和图灵机器人API怎样实现微信群聊机器人
1 实现方案
用 wxBot登录微信,接收、发送微信消息。
用 图灵机器人 API对消息作回复。
2 实现效果
机器人会回复来自联系人的消息,以及群里@此账号的消息。vcD4NCjxwPtei0uLSqr2rttTTprXEyLqxo7Tmtb3Bqs+1yMuhozwvcD4NCjxoMiBpZD0="3-运行方法">3 运行方法
下载wxBot, 安装python的依赖包。在图灵机器人官网注册账号,申请图灵key: 图灵key申请地址
在bot.py文件所在目录下新建conf.ini文件,内容为(key字段内容为申请到的图灵key):
key=1daa0a23734ace8aec5b1
运行bot.py
4 完整代码
#!/usr/bin/env python
# coding: utf-8
from wxbot import *
import ConfigParser
import json
class TulingWXBot(WXBot):
def __init__(self):
WXBot.__init__(self)
self.tuling_key = &&
cf = ConfigParser.ConfigParser()
cf.read('conf.ini')
self.tuling_key = cf.get('main', 'key')
except Exception:
print 'tuling_key:', self.tuling_key
def tuling_auto_reply(self, uid, msg):
if self.tuling_key:
url = &/openapi/api&
user_id = uid.replace('@', '')[:30]
body = {'key': self.tuling_key, 'info': msg.encode('utf8'), 'userid': user_id}
r = requests.post(url, data=body)
respond = json.loads(r.text)
result = ''
if respond['code'] == 100000:
result = respond['text'].replace('
', '
elif respond['code'] == 200000:
result = respond['url']
result = respond['text'].replace('
', '
return result
return u&知道啦&
def handle_msg_all(self, msg):
if msg['msg_type_id'] == 4 and msg['content']['type'] == 0:
# text message from contact
self.send_msg_by_uid(self.tuling_auto_reply(msg['user']['id'], msg['content']['data']), msg['user']['id'])
elif msg['msg_type_id'] == 3:
# group message
if msg['content']['data'].find('@') &= 0:
# someone @ another
my_names = self.get_group_member_name(msg['user']['id'], self.user['UserName'])
if my_names is None:
my_names = {}
if 'NickName' in self.user and len(self.user['NickName']) & 0:
my_names['nickname2'] = self.user['NickName']
if 'RemarkName' in self.user and len(self.user['RemarkName']) & 0:
my_names['remark_name2'] = self.user['RemarkName']
is_at_me = False
text_msg = ''
for _ in my_names:
if msg['content']['data'].find('@'+my_names[_]) &= 0:
is_at_me = True
text_msg = msg['content']['data'].replace('@'+my_names[_], '').strip()
if is_at_me:
# someone @ me
snames = self.get_group_member_name(msg['user']['id'], msg['content']['user']['id'])
src_name = ''
if 'display_name' in snames:
src_name = snames['display_name']
elif 'nickname' in snames:
src_name = snames['nickname']
elif 'remark_name' in snames:
src_name = snames['remark_name']
if src_name != '':
reply = '@' + src_name + ' '
if msg['content']['type'] == 0:
# text message
reply += self.tuling_auto_reply(msg['content']['user']['id'], text_msg)
reply += u&对不起,只认字,其他杂七杂八的我都不认识,,,???,,&
self.send_msg_by_uid(reply, msg['user']['id'])
def main():
bot = TulingWXBot()
bot.DEBUG = True
bot.conf['qr'] = 'png'
if __name__ == '__main__':来零基础实现一个微信聊天机器人 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"contributes":[{"sourceColumn":{"lastUpdated":,"description":"","permission":"COLUMN_PUBLIC","memberId":,"contributePermission":"COLUMN_PUBLIC","translatedCommentPermission":"all","canManage":true,"intro":"","urlToken":"songoflight","id":21035,"imagePath":"4b70deef7","slug":"songoflight","applyReason":"0","name":"一首未弹完的致爱德琳的诗","title":"一首未弹完的致爱德琳的诗","url":"/songoflight","commentPermission":"COLUMN_ALL_CAN_COMMENT","canPost":true,"created":,"state":"COLUMN_NORMAL","followers":10,"avatar":{"id":"4b70deef7","template":"/{id}_{size}.jpg"},"activateAuthorRequested":false,"following":false,"imageUrl":"/4b70deef7_l.jpg","articlesCount":16},"state":"accepted","targetPost":{"titleImage":"/v2-bf73657f5fdd48ba4e95c0aeabe940a0_r.jpg","lastUpdated":,"imagePath":"v2-bf73657f5fdd48ba4e95c0aeabe940a0.jpg","permission":"ARTICLE_PUBLIC","topics":[],"summary":"这个教程适合有编程基础的盆友观看,同时也适合完全没有编程基础的计算机白痴,但是过程中可能会遇到一些问题,可以私聊我解决。我自己的电脑系统是OS X,Windows下的操作我也会涵盖,但是因为我没有在windows下实现过,所以可能会遇到问题,同样的,可以私…","copyPermission":"ARTICLE_COPYABLE","translatedCommentPermission":"all","likes":0,"origAuthorId":0,"publishedTime":"T22:24:23+08:00","sourceUrl":"","urlToken":,"id":1433345,"withContent":false,"slug":,"bigTitleImage":false,"title":"来零基础实现一个微信聊天机器人","url":"/p/","commentPermission":"ARTICLE_ALL_CAN_COMMENT","snapshotUrl":"","created":,"comments":0,"columnId":21035,"content":"","parentId":0,"state":"ARTICLE_PUBLISHED","imageUrl":"/v2-bf73657f5fdd48ba4e95c0aeabe940a0_r.jpg","author":{"bio":"数学本科在读/大数据/计算机/机器学习","isFollowing":false,"hash":"abdfdeff76484","uid":24,"isOrg":false,"slug":"chen-yu-cong-33","isFollowed":false,"description":"决定不去湾区读研了,只要是美帝就行","name":"handlesoul","profileUrl":"/people/chen-yu-cong-33","avatar":{"id":"f4cc76f2da5a4c52eb8e9","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"memberId":,"excerptTitle":"","voteType":"ARTICLE_VOTE_CLEAR"},"id":454877}],"title":"来零基础实现一个微信聊天机器人","author":"chen-yu-cong-33","content":"这个教程适合有编程基础的盆友观看,同时也适合完全没有编程基础的计算机白痴,但是过程中可能会遇到一些问题,可以私聊我解决。我自己的电脑系统是OS X,Windows下的操作我也会涵盖,但是因为我没有在windows下实现过,所以可能会遇到问题,同样的,可以私聊我解决啦。本教程使用的代码是github的开源代码和图灵机器人。请mac用户和Windows用户分别寻找属于自己系统的步骤。首先到图灵机器人的官网注册一个账户,然后创建一个机器人,机器人类型选择微信机器人,然后会有一个key,原谅我很懒不想截图,创建好了就会有的,嗯,找找嘛哈哈。然后从下面开始。Windows用户请从(1)开始,mac用户请从(2)开始(1)环境准备。首先到python官网下载python,2.7版本的是极好的。然后下载一个anaconda(我也不知道这步是不是画蛇添脚),下载64位2.7版本的即可,这两个的安装都是傻瓜式安装,就不多说啦。然后Windows用户进入第(2)步。(2)安装pip。原谅我很懒,Windows用户按照这个教程安装就可以啦。mac用户请打开你的终端,是的mac里面有一个叫终端的玩意,打开以后输入sudo easy_install pip,然后就O了。mac用户请进入(3),Windows用户请进入(3)*(3)一些小小的准备。同样是打开你的终端,对就是终端,依次输入pip install requests,安装完毕之后输入pip install pyqrcode,依次类推,输入pip install pypng,pip install Pillow。(3)*一些小小的准备,按windows+q键(似乎是这个),输入cmd,打开一个黑咕隆咚的叫命令提示符的东西,像(3)一样依次输入那四个命令,每一个都等安装完毕之后再安装下一个,这样最后的一点准备就完成了。(4)这一条mac和windows用户都来看。首先mac用户再打开你亲爱的终端,输入git clone
。windows用户,嗯私聊我我给你代码,或者有的聚聚会玩这个自己就搞定了。(5)mac用户看过来。刚才你在终端输入了那一行可爱的命令之后,不要关!输入cd wxBot。然后输入vi conf.ini,然后按一下i键,输入[main],然后按一下回车,然后再输入key=你的图灵机器人的key。按ESC键,然后按:键,输入wq,回车,就ok了。 然后输入python bot.py,注意大小写,不要瞎搞。输入完了之后,会弹出二维码,手机微信扫码登录,找个人跟你私聊吧,你已经拥有机器人了。(6)windows用户看过来,你会把我给你的压缩包解压缩,然后进入这个文件夹,然后找到conf.ini,把里面的文件第二行的key=后面换成你的机器人的key,然后在这个文件夹里打开命令提示符(这一步我也不知道怎么弄得但是我记得是可以的,百度一下好了)然后输入,python bot.py。扫码登录吧后记:拿到这个代码之后我对代码做了些修改但是效果不是非常好所以就又使用原版的了,发现他目前似乎不能回复图片,后面计划搞一些表情包训练一个模型让他能回复表情包,但是图片标注工作量太大最近又超级忙所以就暂时搁置啦,等到这段忙完了再写。在使用过程中遇到问题可以随时私聊我,或者是你身边的cs聚聚,嗯,就是这么简单。","updated":"T14:24:23.000Z","canComment":false,"commentPermission":"anyone","commentCount":7,"collapsedCount":0,"likeCount":4,"state":"published","isLiked":false,"slug":"","lastestTipjarors":[],"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-bf73657f5fdd48ba4e95c0aeabe940a0_r.jpg","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"微信"},{"url":"/topic/","id":"","name":"聊天机器人"}],"adminClosedComment":false,"titleImageSize":{"width":1280,"height":719},"href":"/api/posts/","excerptTitle":"","column":{"slug":"songoflight","name":"一首未弹完的致爱德琳的诗"},"tipjarState":"activated","tipjarTagLine":"真诚赞赏,手留余香","sourceUrl":"","pageCommentsCount":7,"tipjarorCount":0,"annotationAction":[],"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T22:24:23+08:00","url":"/p/","lastestLikers":[{"bio":"INFP","isFollowing":false,"hash":"c8b068dfac40a1c89840e2","uid":822100,"isOrg":false,"slug":"bai-yi-shao-nian-84","isFollowed":false,"description":"","name":"白衣少年","profileUrl":"/people/bai-yi-shao-nian-84","avatar":{"id":"fd0f3bc5098","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"在东京做兼职案内人(李小牧是前辈)专注服务国内赴日旅游高端客户","isFollowing":false,"hash":"eda53e7ba7d2","uid":570100,"isOrg":false,"slug":"qing-dao-xiao-ge-78-17","isFollowed":false,"description":"欢迎加我微信:hellojapan0081","name":"青岛小哥","profileUrl":"/people/qing-dao-xiao-ge-78-17","avatar":{"id":"ebfc2181efe6dfa2393d","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"学生","isFollowing":false,"hash":"ceeeebbbef","uid":870700,"isOrg":false,"slug":"liu-cheng-37-39","isFollowed":false,"description":"","name":"流城","profileUrl":"/people/liu-cheng-37-39","avatar":{"id":"da8e974dc","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"除了可爱一无所有。","isFollowing":false,"hash":"5d3d468fbd4fe41c008acca2b9b85c45","uid":52,"isOrg":false,"slug":"xiang-ri-qing","isFollowed":false,"description":"也许是天生软弱的缘故,我对所有的喜悦都掺杂着不详的预感。","name":"姥姥家的小猫咪","profileUrl":"/people/xiang-ri-qing","avatar":{"id":"v2-2a3c32f0a44b65ed87c13d","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false}],"summary":"这个教程适合有编程基础的盆友观看,同时也适合完全没有编程基础的计算机白痴,但是过程中可能会遇到一些问题,可以私聊我解决。我自己的电脑系统是OS X,Windows下的操作我也会涵盖,但是因为我没有在windows下实现过,所以可能会遇到问题,同样的,可以私…","reviewingCommentsCount":0,"meta":{"previous":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/50/v2-bb207cf4b930ffcaa9b5b_xl.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"童年"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"数学本科在读/大数据/计算机/机器学习","isFollowing":false,"hash":"abdfdeff76484","uid":24,"isOrg":false,"slug":"chen-yu-cong-33","isFollowed":false,"description":"决定不去湾区读研了,只要是美帝就行","name":"handlesoul","profileUrl":"/people/chen-yu-cong-33","avatar":{"id":"f4cc76f2da5a4c52eb8e9","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"songoflight","name":"一首未弹完的致爱德琳的诗"},"content":"今天到东三环的一个咖啡厅学GRE,一直觉得那里是个很安静很适合学习的去处,回来的路上路过了动物园,满满的回忆啊。还记得小学的时候第一次来北京,第一个来的就是动物园,那个时候家里条件还很一般,到北京来只能住80块一天的地下室,就在军博附近,还清楚的记得那是个国营的,隶属于有色金属研究院。后来很巧合的是,老妈换工作单位也换到了有色院洛阳的分院(逃这个地铁站的门,当时记忆犹新。还有动物园大门。对面的天文馆,那个圆圆的球当时放的是穹幕电影,35块钱一张,还有30块钱的5D电影,那个时候这些还都是稀奇的玩意,我看完了一场5D电影觉得意犹未尽,就把一下午的场次全都给看了一个遍。后来来北京的次数多了,二环里面几乎都转了个遍,在北京实习了这么久,又把中关村附近溜了个滚瓜烂熟,却再也没有小时候的那种味道了。很庆幸在那么小的时候就能被老妈带着满中国的转悠(虽然我觉得她只是想出去玩),见识了很多奇妙的东西,才能把眼光放的更长远哇,接下来开始开发一下世界风光了(逃","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T23:48:09+08:00","url":"/p/","title":"那儿时的记忆啊","summary":"今天到东三环的一个咖啡厅学GRE,一直觉得那里是个很安静很适合学习的去处,回来的路上路过了动物园,满满的回忆啊。还记得小学的时候第一次来北京,第一个来的就是动物园,那个时候家里条件还很一般,到北京来只能住80块一天的地下室,就在军博附近,还清…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":0,"likesCount":3},"next":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/50/v2-bf73657f5fdd48ba4e95c0aeabe940a0_xl.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"Python"},{"url":"/topic/","id":"","name":"机器学习"},{"url":"/topic/","id":"","name":"烦躁"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"数学本科在读/大数据/计算机/机器学习","isFollowing":false,"hash":"abdfdeff76484","uid":24,"isOrg":false,"slug":"chen-yu-cong-33","isFollowed":false,"description":"决定不去湾区读研了,只要是美帝就行","name":"handlesoul","profileUrl":"/people/chen-yu-cong-33","avatar":{"id":"f4cc76f2da5a4c52eb8e9","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"songoflight","name":"一首未弹完的致爱德琳的诗"},"content":"密度聚类顾名思义其实就是从样本密度的角度来考察样本之间的关联性,DBSCAN是一种非常经典的密度聚类方法,在python的scikit-learn机器学习库里面有可直接调用的函数,算法本身还是很简单的,直接上代码好了。import numpy as np\nimport matplotlib.pyplot as plt\n\nfrom sklearn.cluster import DBSCAN\nfrom sklearn import metrics\nfrom sklearn.datasets.samples_generator import make_blobs\nfrom sklearn.preprocessing import StandardScaler\nimport read_data\n\nx = read_data.x\nx = StandardScaler().fit_transform(x)
#对数据进行归一化\n\nnavigation = DBSCAN(eps=0.1, min_samples=10000)\ncore_samples_mask = np.zeros_like(navigation.labels_, dtype=bool)\ncore_samples_mask[navigation.core_sample_indices_] = True\nlabels = navigation.labels_\n\nn_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)\n\nprint('number of clusters: %d' % n_clusters_)\n#上面是进行密度聚类\n#下面是将密度聚类结果上图\n#两个任务之间一定要凑够三行\nunique_labels = set(labels)\ncolors = plt.cm.Spectral(np.linspace(0, 1, len(unique_labels)))\nfor k, col in zip(unique_labels, colors):\n
if k == -1:\n
col = 'k'\n
class_member_mask = (labels == k)\n
xy = X[class_member_mask & core_samples_mask]\n
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,markeredgecolor='k', markersize=14)\n\n
xy = X[class_member_mask & ~core_samples_mask]\n
plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=col,markeredgecolor='k', markersize=3)\n\nplt.title('Estimated number of clusters: %d' % n_clusters_)\nplt.show()\nscikit-learn本身有非常完整的说明文档,DBSCAN这个函数的具体参数可以参见。这周不停地被插入需求很是烦躁,导致这段代码写的也很不好,根据官网的demo改编的,建议修改以后使用,另外不要使用我设置的参数,因为我目前解决的问题是非常特殊的,直接套用会导致聚类的结果非常极端且毁三观。","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T16:52:32+08:00","url":"/p/","title":"密度聚类的scikit-learn工程实现","summary":"密度聚类顾名思义其实就是从样本密度的角度来考察样本之间的关联性,DBSCAN是一种非常经典的密度聚类方法,在python的scikit-learn机器学习库里面有可直接调用的函数,算法本身还是很简单的,直接上代码好了。import numpy as np\nimport matplotlib.pyplot …","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":1,"likesCount":1}},"annotationDetail":null,"commentsCount":7,"likesCount":4,"FULLINFO":true}},"User":{"chen-yu-cong-33":{"isFollowed":false,"name":"handlesoul","headline":"决定不去湾区读研了,只要是美帝就行","avatarUrl":"/f4cc76f2da5a4c52eb8e9_s.jpg","isFollowing":false,"type":"people","slug":"chen-yu-cong-33","bio":"数学本科在读/大数据/计算机/机器学习","hash":"abdfdeff76484","uid":24,"isOrg":false,"description":"决定不去湾区读研了,只要是美帝就行","profileUrl":"/people/chen-yu-cong-33","avatar":{"id":"f4cc76f2da5a4c52eb8e9","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{"experimentFeatures":{"ge3":"ge3_9","ge2":"ge2_1","nwebStickySidebar":"sticky","nwebAnswerRecommendLive":"newVersion","newMore":"new","sendZaMonitor":"true","liveReviewBuyBar":"live_review_buy_bar_2","liveStore":"ls_a2_b2_c1_f2","homeUi2":"default","answerRelatedReadings":"qa_recommend_by_algo_related_with_article","qrcodeLogin":"qrcode","newBuyBar":"liveoldbuy","newMobileColumnAppheader":"new_header","zcmLighting":"zcm","favAct":"default","appStoreRateDialog":"close","mobileQaPageProxyHeifetz":"m_qa_page_nweb","iOSNewestVersion":"4.2.0","default":"None","wechatShareModal":"wechat_share_modal_show","qaStickySidebar":"sticky_sidebar","androidProfilePanel":"panel_b"}},"columns":{"next":{},"songoflight":{"following":false,"canManage":false,"href":"/api/columns/songoflight","name":"一首未弹完的致爱德琳的诗","creator":{"slug":"chen-yu-cong-33"},"url":"/songoflight","slug":"songoflight","avatar":{"id":"4b70deef7","template":"/{id}_{size}.jpg"}}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"edition":{},"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{},"message":{"newCount":0},"pushNotification":{"newCount":0}}后使用快捷导航没有帐号?
只需一步,快速开始
查看: 2501|回复: 2
用图灵机器人快速开发聊天机器人和创建微信公众帐号
UID667183在线时间 小时积分27帖子离线17444 天注册时间
新手上路, 积分 27, 距离下一级还需 23 积分
微信公众帐号已经泛滥成灾,作为一个技术开发人员,想快速创建一个智能的微信公众帐号,可以试试功能强大的图灵机器人。
首先,必须已经拥有了一个可用的公众帐号,这是前提。
其次,登录公众帐号,进入管理后台,进入“功能—高级功能”模块,可以看到有“编辑模式”和“开发模式”。
很多人只能选择“编辑模式”,是因为“编辑模式”只是普通的网页操作,没有任何的技术可言,当然实现的功能也非常简单。
如果想要更多智能的功能,就要果断关闭“编辑模式”,开启“开发模式”。在开发模式的页面中,需要填写url和token,此时只需要去图灵机器人注册一个帐号,就可以马上得到url和token了,复制粘贴之后,点击“提交”,接入完成。
在url的背后,图灵机器人已经替我们完成了所有的工作,包括接收用户的消息、语义解析、解答、发送消息给用户等等,大大减少了开发者的工作量,并且图灵机器人提供的这套微信公众平台开发api是完全免费的。
除了微信直接接入的接口和平台,还有公共的普通数据请求的聊天api,欢迎大家一起交流学习
UID667583在线时间 小时积分7帖子离线17444 天注册时间
新手上路, 积分 7, 距离下一级还需 43 积分
都是高手,有意向可加群,这里会不定期发布开发任务,挣点散碎银子,我现在是苦于无人~
UID667584在线时间 小时积分8帖子离线17444 天注册时间
新手上路, 积分 8, 距离下一级还需 42 积分
:p:p公众账号的经营来个翻新说法。如何吸引粉丝???
Powered by

我要回帖

更多关于 图灵机器人微信插件 的文章

 

随机推荐