main.js - Rizerr/LineAlphatJS GitHub Wiki
Welcome to the LineAlphatJS wiki! const LineAPI = require ( ' ./api ' ); const { Message , OpType , Location } = require ( ' ../curve-thrift/line_types ' ); biarkan exec = require ( ' child_process ' ). exec ;
const myBot = [ ' uf51ed4f092b7686f297a23ed3789ae34 ' ];
fungsi isAdminOrBot ( rizer ) { kembali myBot . termasuk (rizer); }
class LINE memperluas LineAPI { konstruktor () { super (); ini . penerimaID = ' ' ; ini . checkReader = []; ini . stateStatus = { membatalkan : 0 , tendangan : 0 , } }
getOprationType ( operasi ) {
untuk ( biarkan kunci dalam OpType) {
jika ( operasi . tipe == OpType [key]) {
if (key ! == ' NOTIFIED_UPDATE_PROFILE ' ) {
konsol . info ( ` [* $ { operations . type } ] $ { key } ` );
}
}
}
}
jajak pendapat ( operasi ) {
jika ( operasi . type == 25 || operasi . tipe == 26 ) {
// console.log (operasi);
const txt = ( operasi . pesan . teks ! == ' ' && operasi . pesan . teks ! = nol ) ? operasi . pesan . teks : ' ' ;
biarkan pesan = baru Pesan ( operasi . pesan );
ini . receiverID = pesan . untuk = ( operasi . pesan . ke === myBot [ 0 ]) ? operasi . pesan . From_ : operasi . pesan . untuk ;
Obyek . menetapkan (pesan, {ct : operasi . createdTime . toString ()});
ini . textMessage (txt, pesan)
}
jika ( operasi . tipe == 13 && ini . stateStatus . membatalkan == 1 ) {
ini . cancelAll ( operasi . rizer1 );
}
jika ( operasi . tipe == 19 ) { // ada tendangan
// op1 = group nya
// tendangan op2 = yang 'nge'
// op3 = yang 'di' kick
jika ( isAdminOrBot ( operasi . rizer3 )) {
ini . _invite ( operasi . rizer1 , [ operasi . rizer3 ]);
}
jika ( ! isAdminOrBot ( operasi . rizer2 )) {
ini . _kickMember ( operasi . rizer1 , [ operasi . rizer3 ]);
}
}
jika ( operasi . tipe == 55 ) { // ADA reader
const idx = ini . checkReader . findIndex (( v ) => {
jika ( v . Kelompok == operasi . param1 ) {
kembali v
}
})
jika ( ini . checkReader . panjang < 1 || idx == - 1 ) {
ini . checkReader . dorongan ({group : operasi . param1 , pengguna : [ operasi . param2 ], timeSeen : [ operasi . param3 ]});
} lain {
untuk ( var i = 0 ; i < this . checkReader . length ; i ++ ) {
jika ( ini . checkReader [i]. Kelompok == operasi . param1 ) {
jika ( ! ini . checkReader [i]. pengguna . meliputi ( operasi . param2 )) {
ini . checkReader [i]. pengguna . dorongan ( operasi . param2 );
ini . checkReader [i]. timeSeen . dorongan ( operasi . param3 );
}
}
}
}
}
jika ( operasi . tipe == 13 ) { // diinvite
jika ( isAdminOrBot ( operasi . rizer1 )) {
kembali ini . _acceptGroupInvitation ( operasi . param1 );
} lain {
kembali ini . _cancel ( operasi . rizer1 , myBot);
}
}
ini . getOprationType (operasi);
}
async cancelAll ( group ) {
biarkan {listPendingInvite} = menanti ini . searchGroup (group);
jika ( listPendingInvite . length > 0 ) {
ini . _cancel (group, listPendingInvite);
}
}
asinkron searchGroup ( group ) {
biarkan listPendingInvite = [];
biarkan thisgroup = menanti ini . _getGroups ([gid]);
jika (thisgroup [ 0 ]. invitee ! == null ) {
listPendingInvite = thisgroup [ 0 ]. undangan . peta (( kunci ) => {
kembali kunci . pertengahan ;
});
}
biarkan listMember = thisgroup [ 0 ]. anggota . peta (( kunci ) => {
kembali {pertengahan : kunci . pertengahan , dn : kunci . displayName };
});
kembali {
listMember,
listPendingInvite
}
}
setState ( seq ) {
jika ( isAdminOrBot ( seq . dari )) {
biarkan [action, status] = seq . teks . split ( ' ' );
const tindakan = tindakan . toLowerCase ();
const negara = Status . toLowerCase () == ' on ' ? 1 : 0 ;
ini . stateStatus [action] = state;
ini . _sendMessage (seq, ` Status: \ n $ { JSON . stringify ( ini . stateStatus ) } ` );
} lain {
ini . _sendMessage (seq, ` Anda Tidak Admin ` );
}
}
sebutkan ( listMember ) {
biarkan mentionStrings = [ ' ' ];
biarkan pertengahan = [ ' ' ];
untuk ( var i = 0 ; i < listMember . length ; i ++ ) {
mentionStrings . push ( ' @ ' + listMember [i] displayName + ' \ n ' );
pertengahan . push (listMember [i] pertengahan );
}
biarkan string = mentionStrings . Bergabunglah ( ' ' );
biarkan anggota = string . split ( ' @ ' ). iris ( 1 );
biarkan tmp = 0 ;
biarkan memberStart = [];
biarkan mentionMember = member . peta (( v , k ) => {
biarkan z = tmp + = v . panjang + 1 ;
biarkan akhir = z - 1 ;
memberStart . push (akhir);
biarkan mentionz = ` { "S": " $ { ( Isnan (memberStart [k - 1 ] + 1 ) ? 0 : memberStart [k - 1 ] + 1 ) } ", "E": " $ { end } ", "M": " $ { mid [k + 1 ] } "} ` ;
kembali mentionz;
})
kembali {
Nama : mentionStrings . irisan ( 1 ),
cmddata : { PERHATIAN : ` { "MENTIONEES": [ $ { mentionMember } ]} ` }
}
}
async leftGroupByName ( payload ) {
biarkan gid = menanti ini . _findGroupByName (payload);
untuk ( var i = 0 ; i < gid . length ; i ++ ) {
ini . _leaveGroup (gid [i]);
}
}
pemeriksaan ulang async ( cs , group ) {
biarkan pengguna;
untuk ( var i = 0 ; i < cs . length ; i ++ ) {
jika (cs [i] grup == group) {
pengguna = cs [i]. pengguna ;
}
}
biarkan contactMember = menanti ini . _getContacts (pengguna);
kembali contactMember . peta (( z ) => {
kembali {displayName : z . displayName , pertengahan : z . pertengahan };
});
}
removeReaderByGroup ( groupID ) {
const groupIndex = ini . checkReader . findIndex ( v => {
if ( v . group == groupID) {
kembali v
}
})
jika (groupIndex ! = - 1 ) {
ini . checkReader . sambatan (groupIndex, 1 );
}
}
async textMessage ( textMessages , seq ) {
biarkan [cmd, ... payload] = textMessages . split ( ' ' );
payload = payload . Bergabunglah ( ' ' );
biarkan txt = textMessages . toLowerCase ();
biarkan messageID = seq . id ;
if (cmd == ' cancel ' ) {
jika (payload == ' group ' ) {
biarkan groupid = menanti ini . _getGroupsInvited ();
untuk ( biarkan i = 0 ; i < groupid . length ; i ++ ) {
ini . _rejectGroupInvitation (groupid [i])
}
kembali ;
}
jika ( ini . stateStatus . membatalkan == 1 ) {
ini . cancelAll ( seq . untuk );
}
}
jika (txt == ' halo ' || txt == ' riz ' ) {
ini . _sendMessage (seq, ' halo disini rizer :) ' );
}
jika (txt == ' speed ' ) {
const curTime = ( Tanggal . sekarang () / 1000 );
menunggu ini . _sendMessage (seq, ' processing .... ' );
const rtime = ( Tanggal . sekarang () / 1000 ) - curTime;
menunggu ini . _sendMessage (seq, ` $ { rtime } kedua ` );
}
jika (txt === ' kernel ' ) {
exec ( ' uname -a; ptime; id; whoami ' , ( err , sto ) => {
ini . _sendMessage (seq, sto);
})
}
jika (txt === ' kickall ' && ini . stateStatus . menendang == 1 && isAdminOrBot ( seq . dari )) {
biarkan {listMember} = menanti ini . searchGroup ( seq . untuk );
untuk ( var i = 0 ; i < listMember . length ; i ++ ) {
jika ( ! isAdminOrBot (listMember [i] pertengahan )) {
ini . _kickMember ( seq . untuk , [listMember [i]. mid ])
}
}
}
if (txt == ' setpoint ' ) {
ini . _sendMessage (seq, ` Setpoint untuk check pembaca. ` );
ini . removeReaderByGroup ( seq . untuk );
}
jika (txt == ' clear ' ) {
ini . checkReader = []
ini . _sendMessage (seq, ` Hapus semua centang pembaca pada memori ` );
}
jika (txt == ' recheck ' ) {
biarkan rec = menanti ini . recheck ( ini . checkReader , seq . untuk );
const menyebutkan = menanti ini . sebutkan (rec);
seq . contentMetadata = sebutan . cmddata ;
menunggu ini . _sendMessage (seq, menyebutkan . nama . bergabung ( ' ' ));
}
jika ( seq . contentType == 13 ) {
seq . contentType = 0
ini . _sendMessage (seq, seq . contentMetadata . mid );
}
jika (txt == ' setpoint for check reader. ' ) {
ini . searchReader (seq);
}
jika (txt == ' clearall ' ) {
ini . checkReader = [];
}
const action = [ ' cancel on ' , ' batalkan off ' , ' kick on ' , ' kick off ' ]
jika ( tindakan . meliputi (txt)) {
ini . setState (seq)
}
jika (txt == ' myid ' ) {
ini . _sendMessage (seq, ` ID Anda: $ { seq . dari } ` );
}
jika (txt == ' speedtest ' && isAdminOrBot ( seq . dari )) {
exec ( ' speedtest-cli --server 6581 ' , ( err , res ) => {
ini . _sendMessage (seq, res)
})
}
const joinByUrl = [ ' ourl ' , ' curl ' ];
jika ( joinByUrl . meliputi (txt)) {
ini . _sendMessage (seq, ` Updating group ... ` );
biarkan updateGroup = menanti ini . _getGroup ( seq . untuk );
updateGroup . mencegahJoinByTicket = true ;
jika (txt == ' ourl ' ) {
updateGroup . mencegahJoinByTicket = salah ;
const groupUrl = menanti ini . _reissueGroupTicket ( seq . untuk )
ini . _sendMessage (seq, ` Kelompok garis = garis: // ti / g / $ { groupUrl } ` );
}
menunggu ini . _updateGroup (updateGroup);
}
if (cmd == ' join ' ) { // untuk bergabung dengan group pake qrcode contoh: join line: // anu / g / anu
const [ ticketId ] = payload . split ( ' g / ' ). sambatan ( - 1 );
biarkan {id} = menanti ini . _findGroupByTicket (ticketId);
menunggu ini . _acceptGroupInvitationByTicket (id, ticketId);
}
if (cmd == ' spm ' && isAdminOrBot ( seq . from )) { // untuk spam invite contoh: spm <mid>
untuk ( var i = 0 ; i < 4 ; i ++ ) {
ini . _createGroup ( ` spam yang ` , payload);
}
}
jika (cmd == ' meninggalkan ' && isAdminOrBot ( seq . dari )) { // untuk review kiri kelompok Dari kelompok ATAU spam yang contoh kiri <Alfath>
ini . leftGroupByName (payload)
}
jika (cmd == ' lirik ' ) {
biarkan lirik = menanti ini . _searchLyrics (payload);
ini . _sendMessage (seq, lirik);
}
jika (cmd === ' ip ' ) {
exec ( ` curl ipinfo.io/ $ { payload } ` , ( err , res ) => {
hasil const = JSON . parse (res);
if ( typeof result . error == ' undefined ' ) {
const { org , country , loc , city , region } = hasil;
coba {
const [ garis lintang , bujur ] = loc . split ( ' , ' );
biarkan lokasi = baru Lokasi ();
Obyek . menetapkan (lokasi, {
title : ` Lokasi: ` ,
alamat : ` $ { org } $ { city } [ $ { region } ] \ n $ { payload } ` ,
lintang : garis lintang,
bujur : bujur,
telepon : null
})
const Obj = {
teks : ' Lokasi ' ,
lokasi : lokasi,
contentType : 0 ,
}
Obyek . menetapkan (seq, Obj)
ini . _sendMessage (seq, ' Lokasi ' );
} catch (err) {
ini . _sendMessage (seq, ' Tidak Ditemukan ' );
}
} lain {
ini . _sendMessage (seq, ' Lokasi Tidak Ditemukan, Mungkin di dalem goa ' );
}
})
}
}
}
modul . ekspor = new LINE ();