SKLEP

Kącik niewygodnych informacji

Don't shoot the messenger!
Dobermann Dobermann 07.10.2017, 00:07
Bot Wars
114V

Bot Wars

Część z Was wie, że jakiś czas temu obiecałem że jak zacznę robić nowszego bota to udostępnię kod źródłowy starszej wersji. Zacząłem robić nowego bota, więc wiecie co to oznacza ;)

Jak to się wszystko zaczęło?

Zdaje się dwa lata temu zacząłem uważniej przyglądać się działaniu PPE i szukać błędów w stronie tak by dostarczyć ekipie magazynu trochę wytycznych jak moga sobie lepiej zabezpieczyć i zoptymalizować serwis - dzięki temu programista ppe i Perez mieli wiele nieprzespanych nocek i rzucili zapewne nie jedną ku*wą w powietrze (pozdrówka chłopaki! :P).

Przy okazji swoich prac zacząłem sobie pisać skrypty automatyzujące testy, które robiły różne dziwne rzeczy - przez co nawet kiedyś zaliczyłem bana jak test się powódł zbyt dobrze, oraz zalogowałem się na koncie Perez'a (niestety posiałem screenshota) :D

Przy okazji tworzenia tych skryptów stwierdziłem że jeden (bardzo prosty skrypt) odrobinkę rozbuduje i zrobię z niego głupkowatego bota i tak też się stało.

 

Co się działo z botem i co się będzie dziać?

Kiedyś ten prosty pierwszy bot działał jako najprostrzy javascript, który był wywołany z konsoli przeglądarki, póxniejsze wersje coraz mniej korzystały z przeglądarki aż w końcu stały się kompletnie backendowe. Docelowo kiedyś zobaczycie bota zintegorwanego z shoutem na stałe ;)

 

Dasz nam bota? Serio?

Serio, serio! Poniżej jest kod źródłowy jednej z wcześniejszych wersji bota który możecie sobie dowolnie zmodyfikować i dzięki temu będziecie mieli swojego własnego bota który będzie odpowiadał na shoucie w Waszym imieniu :)

 

Co trzeba zrobić żeby go uruchomić i zacząć się nim bawić?

Skrypt możecie dowolnie zmodyfikować przed uruchomieniem, jeśli popełnicie błąd skrypt się po prostu nie uruchomi więc kombinujcie :D

 

Aby uruchomić swojego własnego bota należy wykonać kilka prostych czynności:

1. Zaloguj się na PPE.pl

2. Wejdź na shouta

3. Naciśnij na klawiaturze klawisz F12

Zobaczycie coś takiego:

4. Trzeba kliknąć w zakładkę "konsola" lub "console" w zależnbości od wersji językowej systemu jaki macie a następnie zaznaczyć poniższy kod, skopiować (CTRL + C) i wkleić w te konsole (CTRL + V), a na końcu nacisnąć ENTER.

5. Jeśli wszystko zadziałało, w konsoli przewinie się ściana tekstu i bot zacznie działać, jeśli coś będzie nie tak zobaczycie czerwony komunikat z błędem.

I tyle, teraz możecie na shoucie napisać jakąś komendę i bot na nią powinien zareagować po chwili. 

 

A jak wyłączyć bota?

Po prostu zamknij karte przeglądarki z shoutem - prościej się nie da ;)

 

A po co to wszystko?

Zmodyfikujcie skrypt zróbcie swoje boty i niech sobie trochę powalczą na shoucie, let the fight begin! :D

 


Kod bota


 

console.clear();

cmd=[];
banned_users=['Sephiro 2.0','Binioll']; //tym userom bot nie odpowiada na komendy

    
commands= {  //tu jest zestaw slow kluczowych na jakie bot reaguje, mozna sobie dopisywac swoje wlasne - nie trzeba stosowac nomenklatury ukosnakreska i slowo "/cośtam" moze to byc dowolny ciag znakow
    '/cycki': {
        users: [],
        response: '( 。 ㅅ 。 )'
    },
    '/foczka': {
        users: [],
        response: 'ᶘ ᵒᴥᵒᶅ'
    },
    '/nintendo': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - Switch OFF!');
        }
    },
    '/psx': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - 4TheFrajers, co nie? :P');
        }
    },
    '/sony': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - 4TheFrajers, co nie? :P');
        }
    },
    '/xbox': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - ha! Sony osrane! :D');
        }
    },
    '/microsoft': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - ha! Sony osrane! :D');
        }
    },
    '/playstation': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - 4TheFrajers, co nie? :P');
        }
    },
    '/telewizor': {
        users: [],
        code: function(cuser, cmessage, cid) {
            cmd.push(cuser+' - na telewizorze gram przecież nie mam tv 4k mam panasonica full HD');
        }
    },
}

 

//od tego miejsca nic nie ruszaj bo zepsujesz ;p

function grabShout(last_post_id)
{
    start_scr = new Date();
    cmd=[];
    var max_id=last_post_id,
        resp_arr=[];


    $.each($('#chat-table table'),function(idx,row) {
        id=$(this).find('td.message span[id^=span-]').attr('id');
        id=id.substr(5);
        user=$(this).find('td.avatar a').text();
        message=$(this).find('td.message span[id^=span-]').html();
        time=$(this).find('div.p_right').attr('title');

        resp_arr.push({id:id,user:user,message:message,time:time});
    });
    resp_arr=resp_arr.reverse();

    $.each(resp_arr,function(idx,row) {
        if(row.id>max_id)
        {
            var usr_msg=row.message;
            usr_msg=usr_msg.trim();
            max_id=row.id;

            if($.inArray(row.user,banned_users)<0)
            {
                if(commands[usr_msg])
                {
                    if(commands[usr_msg]['users']=='' || $.inArray(row.user,commands[usr_msg]['users'])>=0)
                    {
                        if(commands[usr_msg]['code']!=undefined)
                        {
                            commands[usr_msg].code(row.user,usr_msg,row.id);
                        }
                        else
                        {
                            cmd.push(usr_msg);
                        }
                    }
                }
            }
        }
    });
    
    $.each(cmd,function(idx,row) {
        if(commands[row])
        {
            sendMessage(commands[row]['response']);
        }
        else
        {
            sendMessage(row);
        }
    });

    setTimeout(function (){ grabShout(max_id); }, 2000);
}

function sendMessage(msg)
{
    var step=300,
        delay_step=100,
        total_len=msg.length,
        message='',
        messages=[],
        loop_idx=0;
    
    if(total_len>0)
    {
        if(total_len<step)
        {
            postMessage(msg);
        }
        else
        {
            for(i=0;i<=total_len;i=i+step)
            {
                message=msg.substr(i,step);
                if(message.length>0)
                {
                    messages.push(message);
                }    
            }
            
            for(i=0;i<messages.length;++i)
            {
                postMessage(messages[i],(delay_step*i));
            }
        }
    }
}

function postMessage(msg,send_delay)
{
    if(typeof(send_delay)==undefined)
    {
        send_delay=0;
    }
    
    if(msg.length>0)
    {
        if(send_delay==0)
        {
            $.ajax({ 
                type:'POST', 
                url:'http://www.ppe.pl/ajax/add_chat.html', 
                data:{ 'chat-message': msg }  
            });
        }
        else
        {
            setTimeout(function (){ $.ajax({ type:'POST', url:'http://www.ppe.pl/ajax/add_chat.html', data:{ 'chat-message': msg } }); }, send_delay);
        }
    }
}

function matchInArray(string, expressions)
{
    var len=expressions.length;

    for (i=0; i<len; i++)
    {
        if (string.match(expressions[i]))
        {
            return expressions[i];
        }
    }
    return false;
};

//bot starting sequence
last_post_id=2953512;
if(last_post_id>2244867)
{
    setTimeout(function (){ grabShout(last_post_id); }, 1000);
}

 

Tagi: bot shout shoutbox

Oceń notkę
+ +11 -

Maniac gameroom builder ;D
Oceń profil
+ +202 -
Dobermann
Ranking: 26 Poziom: 70
PD: 43434
REPUTACJA: 32925
Miesięcznik PSX Extreme