Versi web dari WeChat API, termasuk versi terminal dari WeChat dan robot WeChat
Untuk memastikan bahwa contoh skrip berjalan dengan baik, silakan instal paket pihak ketiga yang diperlukan.
pip install -r requirements.txt
Catatan: Gambar dan fungsi yang ditunjukkan di bawah ini mungkin bukan yang terbaru, silakan lihat kode sumber untuk detailnya.
Ikuti instruksi untuk memindai kode QR di ponsel WeChat Anda dan masuk. Anda dapat memilih apakah akan mengaktifkan mode balasan otomatis.
Setelah mengaktifkan mode balasan otomatis, jika pesan teks yang diterima adalah pesan teks, maka secara otomatis akan membalas, termasuk pesan grup.
Kartu nama, tautan, emotikon animasi, dan pesan lokasi alamat.
Pada dasarnya semua fungsi pada versi web saat ini didukung.
+--------------+ +---------------+ +---------------+
| | | | | |
| 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 | Dapatkan UUID |
---|---|
url | https://login.weixin.qq.com/jslogin |
metode | POS |
data | Pengkodean URL |
param | appid :应用ID menyenangkan : 应用类型 barulang : 语言 zh_CN_ : 时间戳 |
Data pengembalian (String):
window.QRLogin.code = 200; window.QRLogin.uuid = "xxx"
Catatan: Appid di sini adalah AppID dari aplikasi yang terdaftar di platform terbuka WeChat. Versi web WeChat memiliki dua AppID. Yang pertama adalah
wx782c26e4c19acffb
, dan nama aplikasi ditampilkan sebagaiWeb微信
pada klien WeChat; yang saat ini adalahwxeb7ec651dd0aefa9
, dan nama yang ditampilkan adalah微信网页版
.
API | Ikat login (webwxpushloginurl) |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxpushloginurl |
metode | MENDAPATKAN |
param | kamu :xxx |
Data pengembalian (String):
{'msg': 'all ok', 'uuid': 'xxx', 'ret': '0'}
通过这种方式可以省掉扫二维码这步操作,更加方便
API | Hasilkan kode QR |
---|---|
url | https://login.weixin.qq.com/l/ uuid |
metode | MENDAPATKAN |
API | Pindai kode QR untuk masuk |
---|---|
url | https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login |
metode | MENDAPATKAN |
param | tip : 1未扫描 0已扫描 uuid :xxx _ : 时间戳 |
Data pengembalian (String):
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 | halaman webwxnewlogin |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage |
metode | MENDAPATKAN |
param | tiket : xxx uuid :xxx lang : 语言 zh_CNpindaian :xxx menyenangkan : baru |
Data pengembalian (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 |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, ski: xxx, ID Perangkat: xxx, } } |
Data pengembalian (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 | webwxstatusnotify |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxstatusnotify?lang=zh_CN&pass_ticket=xxx |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, Skey: xxx, ID Perangkat: xxx }, Kode: 3, FromUserName: 自己ID ,ToUserName: 自己ID ,ClientMsgId: 时间戳 } |
Data pengembalian (JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
},
...
}
API | webwxgetcontact |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin//webwxgetcontact?pass_ticket=xxx&skey=xxx&r=xxx |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
Data pengembalian (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 | webwxbatchgetcontact |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxbatchgetcontact?type=ex&r=xxx&pass_ticket=xxx |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, Skey: xxx, ID Perangkat: xxx }, Hitung: 群数量 ,Daftar: [ { Nama Pengguna: 群ID , EncryChatRoomId: "" },... ], } |
Kembalikan data (JSON) sama seperti di atas
API | pemeriksaan sinkronisasi |
---|---|
protokol | https |
tuan rumah | webpush.weixin.qq.com webpush.wx2.qq.com webpush.wx8.qq.com webpush.wx.qq.com webpush.web2.wechat.com webpush.web.wechat.com |
jalur | /cgi-bin/mmwebwx-bin/synccheck |
metode | MENDAPATKAN |
data | Pengkodean URL |
param | r :时间戳 sisi :xxx kamu :xxx ski : xxx ID perangkat :xxx kunci sinkronisasi :xxx _ : 时间戳 |
Data pengembalian (String):
window.synccheck={retcode:"xxx",selector:"xxx"}
retcode:
0 正常
1100 失败/登出微信
selector:
0 正常
2 新的消息
7 进入/离开聊天界面
API | sinkronisasi webwx |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsync?sid=xxx&skey=xxx&pass_ticket=xxx |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, Skey: xxx, ID Perangkat: xxx }, Kunci Sinkronisasi: xxx, rr: 时间戳取反 } |
Data pengembalian (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 |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, Skey: xxx, ID Perangkat: xxx }, Pesan: { Ketik: 1 文字消息 ,Isi: 要发送的消息 ,FromUserName: 自己ID ,ToUserName: 好友ID ,LocalID: 与clientMsgId相同 ,ClientMsgId: 时间戳左移4位随后补上4位随机数 } } |
Data pengembalian (JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
},
...
}
API | webwxrevokemsg |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxrevokemsg |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, Skey: xxx, ID Perangkat: xxx }, SvrMsgId: msg_id, NamaPengguna: user_id, ClientMsgId: local_msg_id } |
Data pengembalian (JSON):
{
"BaseResponse": {
"Ret": 0,
"ErrMsg": ""
}
}
API | webwxsendmsgemotion |
---|---|
url | https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxsendemoticon?fun=sys&f=json&pass_ticket=xxx |
metode | POS |
data | JSON |
tajuk | Tipe Konten: aplikasi/json; rangkaian karakter=UTF-8 |
param | { Permintaan Dasar: { Uin: xxx, Sid: xxx, Skey: xxx, ID Perangkat: xxx }, Pesan: { Ketik: 47 emoji消息 ,Bendera Emoji: 2, MediaId: 表情上传后的媒体ID ,FromUserName: 自己ID ,ToUserName: 好友ID ,LocalID: 与clientMsgId相同 ,ClientMsgId: 时间戳左移4位随后补上4位随机数 } } |
API | webwxgeticon |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgeticon |
metode | MENDAPATKAN |
param | seq :数字,可为空 nama pengguna : ID ski : xxx |
API | webwxgetheadimg |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetheadimg |
metode | MENDAPATKAN |
param | seq :数字,可为空 nama pengguna : 群ID ski : xxx |
API | webwxgetmsgimg |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetmsgimg |
metode | MENDAPATKAN |
param | MsgID :消息ID ketik : 略缩图 budak atau为空时加载原图 ski : xxx |
API | webwxgetvideo |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvideo |
metode | MENDAPATKAN |
param | msgstr :消息ID ski : xxx |
API | webwxgetvoice |
---|---|
url | https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxgetvoice |
metode | MENDAPATKAN |
param | msgstr :消息ID ski : xxx |
jenis | menjelaskan |
---|---|
Akun pribadi | Mulailah dengan @ , misalnya: @xxx |
obrolan grup | Mulailah dengan @@ , misalnya: @@xxx |
Akun publik/akun layanan | Dimulai dengan @ tetapi memiliki VerifyFlag & 8 != 0VerifyFlag :Rekening Umum/Layanan Umum Pribadi : 8 Nomor layanan perusahaan umum: 24 Akun resmi WeChat 微信团队 : 56 |
Akun khusus | Akun seperti File Transfer Assistant memiliki ID khusus.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 |
Format umum pesan:
{
"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
}
Tipe Pesan | menjelaskan |
---|---|
1 | pesan teks |
3 | Pesan gambar |
34 | pesan suara |
37 | Pesan konfirmasi teman |
40 | KEMUNGKINAN TEMANEND_MSG |
42 | Bagikan kartu nama |
43 | pesan video |
47 | emotikon animasi |
48 | pesan lokasi |
49 | berbagi tautan |
50 | VOIPMSG |
51 | Pesan inisialisasi WeChat |
52 | VOIPNOTIFKAN |
53 | UNDANGAN VOIP |
62 | video pendek |
9999 | SYSNOTICE |
10.000 | Pesan sistem |
10002 | Tarik pesan |
Pesan inisialisasi 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 >
pesan teks
MsgType: 1
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: 消息内容
Pesan gambar
MsgType: 3
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取图片
Content:
< msg >
< img length =" 6503 " hdlength =" 0 " />
< commenturl > </ commenturl >
</ msg >
Pesan video kecil
MsgType: 62
FromUserName: 发送方ID
ToUserName: 接收方ID
MsgId: 用于获取小视频
Content:
< msg >
< img length =" 6503 " hdlength =" 0 " />
< commenturl > </ commenturl >
</ msg >
pesan geolokasi
MsgType: 1
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: http://weixin.qq.com/cgi-bin/redirectforward?args=xxx
// 属于文本消息,只不过内容是一个跳转到地图的链接
pesan kartu nama
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
}
pesan suara
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 >
emotikon animasi
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 >
Tautan biasa atau pesan berbagi aplikasi
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 >
pesan tautan musik
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 >
Pesan grup
MsgType: 1
FromUserName: @@xxx
ToUserName: @xxx
Content:
@xxx:<br/>xxx
Berita amplop merah
MsgType: 49
AppMsgType: 2001
FromUserName: 发送方ID
ToUserName: 接收方ID
Content: 未知
Catatan: Berdasarkan kode versi web, terlihat bahwa ini mungkin mendukung tampilan pesan amplop merah di masa mendatang, tetapi saat ini menggunakan pesan sistem, lihat di bawah.
Pesan sistem
MsgType: 10000
FromUserName: 发送方ID
ToUserName: 自己ID
Content:
"你已添加了 xxx ,现在可以开始聊天了。"
"如果陌生人主动添加你为朋友,请谨慎核实对方身份。"
"收到红包,请在手机上查看"
Jika Anda ingin berkomunikasi dengan pengembang WeixinBot lainnya, atau memiliki pertanyaan atau saran, Anda dapat bergabung dengan grup WeChat [Pemberi makan anjing remaja] untuk berdiskusi. Pindai kode QR di bawah untuk menambahkan robot sebagai teman, dan balas [Aidog] untuk mendapatkan tautan bergabung dengan grup.
Catatan: Ini bukan kode QR grup. Ini adalah robot yang menarik Anda ke dalam grup. Ingatlah untuk membalas robot [Aidog]~ (kode rahasia: Aidog)