WeChat 및 WeChat 로봇의 터미널 버전을 포함한 WeChat API의 웹 버전
샘플 스크립트가 제대로 실행되도록 하려면 필수 타사 패키지를 설치하십시오.
pip install -r requirements.txt
참고: 아래에 설명된 그림과 기능은 최신이 아닐 수 있습니다. 자세한 내용은 소스 코드를 참조하세요.
안내에 따라 휴대폰 WeChat에서 QR 코드를 스캔하고 로그인하세요. 자동 응답 모드를 켤지 여부를 선택할 수 있습니다.
자동 답장 모드를 켠 후 수신된 문자 메시지가 문자 메시지인 경우 그룹 메시지를 포함하여 자동으로 답장합니다.
명함, 링크, 애니메이션 이모티콘 및 주소 위치 메시지.
기본적으로 현재 웹 버전의 모든 기능이 지원됩니다.
+--------------+ +---------------+ +---------------+
| | | | | |
| Get UUID | | Get Contact | | Status Notify |
| | | | | |
+-------+------+ +-------^-------+ +-------^-------+
| | |
| +-------+ +--------+
| | |
+-------v------+ +-----+--+------+ +--------------+
| | | | | |
| Get QRCode | | Weixin Init +------> Sync Check <----+
| | | | | | |
+-------+------+ +-------^-------+ +-------+------+ |
| | | |
| | +-----------+
| | |
+-------v------+ +-------+--------+ +-------v-------+
| | Confirm Login | | | |
+------> Login +---------------> New Login Page | | Weixin Sync |
| | | | | | |
| +------+-------+ +----------------+ +---------------+
| |
|QRCode Scaned|
+-------------+
API | UUID 가져오기 |
---|---|
URL | https://login.weixin.qq.com/jslogin |
방법 | 우편 |
데이터 | URL 인코딩 |
매개변수 | appid :应用ID 재미 : 새로운 应用类型 lang : zh_CN 语言 _ : 时间戳 |
반환 데이터(문자열):
window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
참고: 여기서 appid는 WeChat 오픈 플랫폼에 등록된 애플리케이션의 AppID입니다. WeChat의 웹 버전에는 두 개의 AppID가 있습니다. 초기 버전은
wx782c26e4c19acffb
였으며, WeChat 클라이언트에서는 애플리케이션 이름이Web微信
으로 표시되었습니다. 현재 버전은wxeb7ec651dd0aefa9
이고, 표시되는 이름은微信网页版
입니다.
API | 로그인 바인딩(webwxpushloginurl) |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxpushloginurl |
방법 | 얻다 |
매개변수 | 우인 :xxx |
반환 데이터(문자열):
{'msg': 'all ok', 'uuid': 'xxx', 'ret': '0'}
通过这种方式可以省掉扫二维码这步操作,更加方便
API | QR 코드 생성 |
---|---|
URL | uuid |
방법 | 얻다 |
API | QR 코드를 스캔하여 로그인하세요 |
---|---|
URL | https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login |
방법 | 얻다 |
매개변수 | 팁 : 1개는未扫描 0은已扫描 uuid :xxx _ : 时间戳 |
반환 데이터(문자열):
window.code=xxx;
xxx:
408 登陆超时
201 扫描成功
200 确认登录
当返回200时,还会有
window.redirect_uri="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket=xxx&uuid=xxx&lang=xxx&scan=xxx";
API | webwx새로그인페이지 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage |
방법 | 얻다 |
매개변수 | 티켓 : xxx uuid :xxx lang : zh_CN 语言 스캔 :xxx 재미 : 새로운 |
반환 데이터(XML):
<error>
<ret>0</ret>
<message>OK</message>
<skey>xxx</skey>
<wxsid>xxx</wxsid>
<wxuin>xxx</wxuin>
<pass_ticket>xxx</pass_ticket>
<isgrayscale>1</isgrayscale>
</error>
API | webwxinit |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?pass_ticket=xxx&skey=xxx&r=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { 기본 요청: { 유인: xxx, 시드: xxx, 스카이: xxx, 장치 ID: xxx, } } |
반환 데이터(JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
},
"Count": 11,
"ContactList": [...],
"SyncKey": {
"Count": 4,
"List": [
{
"Key": 1,
"Val": 635705559
},
...
]
},
"User": {
"Uin": xxx,
"UserName": xxx,
"NickName": xxx,
"HeadImgUrl": xxx,
"RemarkName": "",
"PYInitial": "",
"PYQuanPin": "",
"RemarkPYInitial": "",
"RemarkPYQuanPin": "",
"HideInputBarFlag": 0,
"StarFriend": 0,
"Sex": 1,
"Signature": "Apt-get install B",
"AppAccountFlag": 0,
"VerifyFlag": 0,
"ContactFlag": 0,
"WebWxPluginSwitch": 0,
"HeadImgFlag": 1,
"SnsFlag": 17
},
"ChatSet": xxx,
"SKey": xxx,
"ClientVersion": 369297683,
"SystemTime": 1453124908,
"GrayScale": 1,
"InviteStartCount": 40,
"MPSubscribeMsgCount": 2,
"MPSubscribeMsgList": [...],
"ClickReportInterval": 600000
}
API | webwxstatus알림 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify?lang=zh_CN&pass_ticket=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 코드: 3, FromUserName: 自己ID ,ToUserName: 自己ID ,ClientMsgId: 时间戳 } |
반환 데이터(JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
},
...
}
API | webwxget연락처 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin//webwxgetcontact?pass_ticket=xxx&skey=xxx&r=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
반환 데이터(JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
},
"MemberCount": 334,
"MemberList": [
{
"Uin": 0,
"UserName": xxx,
"NickName": "Urinx",
"HeadImgUrl": xxx,
"ContactFlag": 3,
"MemberCount": 0,
"MemberList": [],
"RemarkName": "",
"HideInputBarFlag": 0,
"Sex": 0,
"Signature": "你好,我们是地球三体组织。在这里,你将感受到不一样的思维模式,以及颠覆常规的世界观。而我们的目标,就是以三体人的智慧,引领人类未来科学技术500年。",
"VerifyFlag": 8,
"OwnerUin": 0,
"PYInitial": "URINX",
"PYQuanPin": "Urinx",
"RemarkPYInitial": "",
"RemarkPYQuanPin": "",
"StarFriend": 0,
"AppAccountFlag": 0,
"Statues": 0,
"AttrStatus": 0,
"Province": "",
"City": "",
"Alias": "Urinxs",
"SnsFlag": 0,
"UniFriend": 0,
"DisplayName": "",
"ChatRoomId": 0,
"KeyWord": "gh_",
"EncryChatRoomId": ""
},
...
],
"Seq": 0
}
API | webwxbatchget연락처 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r=xxx&pass_ticket=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 개수: 群数量 ,목록: [ { 사용자 이름: 群ID , EncryChatRoomId: "" },... ], } |
위와 동일한 데이터(JSON)를 반환합니다.
API | 동기화 확인 |
---|---|
규약 | https |
주인 | webpush.weixin.qq.com webpush.wx2.qq.com webpush.wx8.qq.com webpush.wx.qq.com webpush.web2.wechat.com webpush.web.wechat.com |
길 | /cgi-bin/mmwebwx-bin/synccheck |
방법 | 얻다 |
데이터 | URL 인코딩 |
매개변수 | r :时间戳 시드 :xxx 당신 :xxx 스카이 : xxx 장치ID :xxx 싱크키 :xxx _ : 时间戳 |
반환 데이터(문자열):
window.synccheck={retcode:"xxx",selector:"xxx"}
retcode:
0 正常
1100 失败/登出微信
selector:
0 正常
2 新的消息
7 进入/离开聊天界面
API | 웹엑스싱크 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 동기화키: xxx, rr: 时间戳取反 } |
반환 데이터(JSON):
{
'BaseResponse': {'ErrMsg': '', 'Ret': 0},
'SyncKey': {
'Count': 7,
'List': [
{'Val': 636214192, 'Key': 1},
...
]
},
'ContinueFlag': 0,
'AddMsgCount': 1,
'AddMsgList': [
{
'FromUserName': '',
'PlayLength': 0,
'RecommendInfo': {...},
'Content': "",
'StatusNotifyUserName': '',
'StatusNotifyCode': 5,
'Status': 3,
'VoiceLength': 0,
'ToUserName': '',
'ForwardFlag': 0,
'AppMsgType': 0,
'AppInfo': {'Type': 0, 'AppID': ''},
'Url': '',
'ImgStatus': 1,
'MsgType': 51,
'ImgHeight': 0,
'MediaId': '',
'FileName': '',
'FileSize': '',
...
},
...
],
'ModChatRoomMemberCount': 0,
'ModContactList': [],
'DelContactList': [],
'ModChatRoomMemberList': [],
'DelContactCount': 0,
...
}
API | webwxsendmsg |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg?pass_ticket=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 메시지: { 유형: 文字消息 1개,내용: 要发送的消息 ,FromUserName: 自己ID ,ToUserName: 好友ID ,LocalID: 与clientMsgId相同 .ClientMsgId: 时间戳左移4位随后补上4位随机数 } } |
반환 데이터(JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
},
...
}
API | webwxrevokemsg |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxrevokemsg |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, SvrMsgId: msg_id, 받는 사람사용자 이름: user_id, 클라이언트MsgId: local_msg_id } |
반환 데이터(JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
}
}
API | webwxsendmsgemotion |
---|---|
URL | https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendemoticon?fun=sys&f=json&pass_ticket=xxx |
방법 | 우편 |
데이터 | JSON |
헤더 | 콘텐츠 유형: 애플리케이션/json; charset=UTF-8 |
매개변수 | { BaseRequest: { Uin: xxx, Sid: xxx, Skey: xxx, DeviceID: xxx }, 메시지: { 유형: emoji消息 47개,Emoji플래그: 2, MediaId: 表情上传后的媒体ID ,FromUserName: 自己ID ,ToUserName: 好友ID ,LocalID: 与clientMsgId相同 .ClientMsgId: 时间戳左移4位随后补上4位随机数 } } |
API | webwxget아이콘 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgeticon |
방법 | 얻다 |
매개변수 | seq :数字,可为空 사용자 이름 : ID 스카이 : xxx |
API | webwxgetheadimg |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetheadimg |
방법 | 얻다 |
매개변수 | seq :数字,可为空 사용자 이름 : 群ID 스카이 : xxx |
API | webwxgetmsgimg |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg |
방법 | 얻다 |
매개변수 | MsgID :消息ID 유형 : 슬레이브 略缩图 또는为空时加载原图 스카이 : xxx |
API | webwxget비디오 |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvideo |
방법 | 얻다 |
매개변수 | msgid :消息ID 스카이 : xxx |
API | webwxgetvoice |
---|---|
URL | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvoice |
방법 | 얻다 |
매개변수 | msgid :消息ID 스카이 : xxx |
유형 | 설명하다 |
---|---|
개인 계정 | @ 로 시작하세요(예: @xxx . |
그룹 채팅 | @@ 으로 시작하세요(예: @@xxx . |
공개 계정/서비스 계정 | @ 로 시작하지만 VerifyFlag & 8 != 0이 있습니다.VerifyFlag :일반개인공공계좌/서비스계좌 : 8개 일반 기업 서비스 번호: 24 WeChat 공식 계정 微信团队 : 56 |
특별계정 | 파일 전송 도우미와 같은 계정에는 특수 ID가 있습니다. 현재 알려진 계정은 다음과 같습니다.filehelper , newsapp , fmessage , weibo , qqmail , tmessage , qmessage , qqsync , floatbottle , lbsapp , shakeapp , medianote , qqfriend , readerapp , blogapp , facebookapp , masssendapp , meishiapp , feedsapp , voip , blogappweixin , weixin , brandsessionholder , weixinreminder , officialaccounts , notification_messages , wxitil , userexperience_alarm , notification_messages |
메시지의 일반적인 형식:
{
"FromUserName": "",
"ToUserName": "",
"Content": "",
"StatusNotifyUserName": "",
"ImgWidth": 0,
"PlayLength": 0,
"RecommendInfo": {...},
"StatusNotifyCode": 4,
"NewMsgId": "",
"Status": 3,
"VoiceLength": 0,
"ForwardFlag": 0,
"AppMsgType": 0,
"Ticket": "",
"AppInfo": {...},
"Url": "",
"ImgStatus": 1,
"MsgType": 1,
"ImgHeight": 0,
"MediaId": "",
"MsgId": "",
"FileName": "",
"HasProductId": 0,
"FileSize": "",
"CreateTime": 1454602196,
"SubMsgType": 0
}
메시지 유형 | 설명하다 |
---|---|
1 | 문자 메시지 |
3 | 그림 메시지 |
34 | 음성 메시지 |
37 | 친구 확인 메시지 |
40 | POSSIBLEFRIEND_MSG |
42 | 명함 공유 |
43 | 영상 메시지 |
47 | 애니메이션 이모티콘 |
48 | 위치 메시지 |
49 | 링크 공유 |
50 | VOIPMSG |
51 | WeChat 초기화 메시지 |
52 | 음성 알림 |
53 | 보이핀바이트 |
62 | 짧은 영상 |
9999 | 시스템 공지사항 |
10000 | 시스템 메시지 |
10002 | 메시지 철회 |
WeChat 초기화 메시지
MsgType: 51
FromUserName: 自己ID
ToUserName: 自己ID
StatusNotifyUserName: 最近联系的联系人ID
Content:
< msg >
< op id =' 4 ' >
< username >
// 最近联系的联系人
filehelper,xxx@chatroom,wxid_xxx,xxx,...
</ username >
< unreadchatlist >
< chat >
< username >
// 朋友圈
MomentsUnreadMsgStatus
</ username >
< lastreadtime >
1454502365
</ lastreadtime >
</ chat >
</ unreadchatlist >
< unreadfunctionlist >
// 未读的功能账号消息,群发助手,漂流瓶等
</ unreadfunctionlist >
</ op >
</ msg >
문자 메시지
MsgType: 1
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: 消息内容
그림 메시지
MsgType: 3
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取图片
Content:
< msg >
< img length =" 6503 " hdlength =" 0 " />
< commenturl > </ commenturl >
</ msg >
작은 영상 메시지
MsgType: 62
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取小视频
Content:
< msg >
< img length =" 6503 " hdlength =" 0 " />
< commenturl > </ commenturl >
</ msg >
위치정보 메시지
MsgType: 1
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: http://weixin.qq.com/cgi-bin/redirectforward?args=xxx
// 属于文本消息,只不过内容是一个跳转到地图的链接
명함 메시지
MsgType: 42
FromUserName: 发送方ID
ToUserName: 接收方ID
Content :
< ? xml version = "1.0" ? >
< msg bigheadimgurl = "" smallheadimgurl = "" username = "" nickname = "" shortpy = "" alias = "" imagestatus = "3" scene = "17" province = "" city = "" sign = "" sex = "1" certflag = "0" certinfo = "" brandIconUrl = "" brandHomeUrl = "" brandSubscriptConfigUrl = "" brandFlags = "0" regionCode = "" />
RecommendInfo:
{
"UserName" : "xxx" , // ID
"Province" : "xxx" ,
"City" : "xxx" ,
"Scene" : 17 ,
"QQNum" : 0 ,
"Content" : "" ,
"Alias" : "xxx" , // 微信号
"OpCode" : 0 ,
"Signature" : "" ,
"Ticket" : "" ,
"Sex" : 0 , // 1:男, 2:女
"NickName" : "xxx" , // 昵称
"AttrStatus" : 4293221 ,
"VerifyFlag" : 0
}
음성 메시지
MsgType: 34
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取语音
Content:
< msg >
< voicemsg endflag =" 1 " cancelflag =" 0 " forwardflag =" 0 " voiceformat =" 4 " voicelength =" 1580 " length =" 2026 " bufid =" 216825389722501519 " clientmsgid =" 49efec63a9774a65a932a4e5fcd4e923filehelper174_1454602489 " fromusername ="" />
</ msg >
애니메이션 이모티콘
MsgType: 47
FromUserName: 发送方ID
ToUserName: 接收方ID
Content:
< msg >
< emoji fromusername = "" tousername = "" type =" 2 " idbuffer =" media:0_0 " md5 =" e68363487d8f0519c4e1047de403b2e7 " len = " 86235 " productid =" com.tencent.xin.emoticon.bilibili " androidmd5 =" e68363487d8f0519c4e1047de403b2e7 " androidlen =" 86235 " s60v3md5 = " e68363487d8f0519c4e1047de403b2e7 " s60v3len =" 86235 " s60v5md5 = " e68363487d8f0519c4e1047de403b2e7 " s60v5len =" 86235 " cdnurl = " http://emoji.qpic.cn/wx_emoji/eFygWtxcoMF8M0oCCsksMA0gplXAFQNpiaqsmOicbXl1OC4Tyx18SGsQ/ " designerid = "" thumburl = " http://mmbiz.qpic.cn/mmemoticon/dx4Y70y9XctRJf6tKsy7FwWosxd4DAtItSfhKS0Czr56A70p8U5O8g/0 " encrypturl = " http://emoji.qpic.cn/wx_emoji/UyYVK8GMlq5VnJ56a4GkKHAiaC266Y0me0KtW6JN2FAZcXiaFKccRevA/ " aeskey = " a911cc2ec96ddb781b5ca85d24143642 " > </ emoji >
< gameext type =" 0 " content =" 0 " > </ gameext >
</ msg >
일반 링크 또는 애플리케이션 공유 메시지
MsgType: 49
AppMsgType: 5
FromUserName: 发送方ID
ToUserName: 接收方ID
Url: 链接地址
FileName: 链接标题
Content:
< msg >
< appmsg appid ="" sdkver =" 0 " >
< title > </ title >
< des > </ des >
< type > 5 </ type >
< content > </ content >
< url > </ url >
< thumburl > </ thumburl >
...
</ appmsg >
< appinfo >
< version > </ version >
< appname > </ appname >
</ appinfo >
</ msg >
음악 링크 메시지
MsgType: 49
AppMsgType: 3
FromUserName: 发送方ID
ToUserName: 接收方ID
Url: 链接地址
FileName: 音乐名
AppInfo: // 分享链接的应用
{
Type: 0,
AppID: wx485a97c844086dc9
}
Content:
< msg >
< appmsg appid =" wx485a97c844086dc9 " sdkver =" 0 " >
< title > </ title >
< des > </ des >
< action > </ action >
< type > 3 </ type >
< showtype > 0 </ showtype >
< mediatagname > </ mediatagname >
< messageext > </ messageext >
< messageaction > </ messageaction >
< content > </ content >
< contentattr > 0 </ contentattr >
< url > </ url >
< lowurl > </ lowurl >
< dataurl >
http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&guid=ffffffffc104ea2964a111cf3ff3edaf&fromtag=46
</ dataurl >
< lowdataurl >
http://ws.stream.qqmusic.qq.com/C100003i9hMt1bgui0.m4a?vkey=6867EF99F3684&guid=ffffffffc104ea2964a111cf3ff3edaf&fromtag=46
</ lowdataurl >
< appattach >
< totallen > 0 </ totallen >
< attachid > </ attachid >
< emoticonmd5 > </ emoticonmd5 >
< fileext > </ fileext >
</ appattach >
< extinfo > </ extinfo >
< sourceusername > </ sourceusername >
< sourcedisplayname > </ sourcedisplayname >
< commenturl > </ commenturl >
< thumburl >
http://imgcache.qq.com/music/photo/album/63/180_albumpic_143163_0.jpg
</ thumburl >
< md5 > </ md5 >
</ appmsg >
< fromusername > </ fromusername >
< scene > 0 </ scene >
< appinfo >
< version > 29 </ version >
< appname >摇一摇搜歌</ appname >
</ appinfo >
< commenturl > </ commenturl >
</ msg >
그룹 메시지
MsgType: 1
FromUserName: @@xxx
ToUserName: @xxx
Content:
@xxx:<br/>xxx
빨간 봉투 뉴스
MsgType: 49
AppMsgType: 2001
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: 未知
참고: 웹 버전의 코드에 따르면 향후 빨간 봉투 메시지 보기를 지원할 수 있지만 현재는 시스템 메시지를 사용하고 있음을 알 수 있습니다. 아래를 참조하세요.
시스템 메시지
MsgType: 10000
FromUserName: 发送方ID
ToUserName: 自己ID
Content:
"你已添加了 xxx ,现在可以开始聊天了。"
"如果陌生人主动添加你为朋友,请谨慎核实对方身份。"
"收到红包,请在手机上查看"
WeixinBot의 다른 개발자들과 소통하고 싶거나 질문이나 제안 사항이 있으시면 WeChat 그룹 [Youth fed the dog]에 참여하여 토론하실 수 있습니다. 아래 QR코드를 스캔하여 로봇을 친구 추가하고, [아이독]에게 답장을 보내면 그룹 가입 링크를 받을 수 있습니다.
참고: 그룹의 QR코드가 아닙니다. 그룹으로 끌어들이는 로봇입니다. 로봇 [아이독]에게 답장해주세요~ (비밀번호: 아이독)