Icq бот на Delphi

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by -Hormold-, 21 Apr 2008.

  1. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Пишу бота на Delphi, хотел узнать как сделать распознование команд таких как !md5 123
    Простая команда работает так:
    Code:
    if Msg='!md5'//Команда
    then
    begin
    ICQClient.SendMessage(UIN,'тут ответ');//ответ
    end;
    а как сделать чтоб команда могла буть !md5 123 и ответ был например 202cb962ac59075b964b07152d234b70

    Помогит пожалуйста.
     
  2. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    400
    Likes Received:
    153
    Reputations:
    48
    Code:
      Msg:='!md5 12345';
      If (pos('!md5',Msg) = 1) and (length(Msg)>5) then
      begin
        pass:=copy(Msg,6,length(Msg)-5);
        hash:=GetMd5(pass);
      end;
     
  3. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Странно...
    Скинь класс компонент GetMd5
     
  4. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Спасибо =)
    Нашёл...
     
  5. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    400
    Likes Received:
    153
    Reputations:
    48
    тебе ещё и мд5 класс)) уж сам найдёшь, благо их куча...
     
    1 person likes this.
  6. x0man

    x0man Elder - Старейшина

    Joined:
    24 Feb 2006
    Messages:
    33
    Likes Received:
    13
    Reputations:
    0
    мб лучше так сделать...
    Code:
    Procedure ParseMessage(UIN : Integer; mess : string);
    var cmd  : string;
        param: string;
        i    : Integer;
    begin
      if Length(Mess) > 0 then
        begin
          i    := Pos(' ', mess);
          if i > 0 then
            begin
              cmd   := Copy(mess, 1, i - 1);
              // далее в любом случае можно не высчитывать точно,
              // третий параметр в Copy(...)
              param := Copy(mess, i + 1, Length(mess));
            end
          else
            begin
              cmd   := mess;
              param := '';
            end;
    
        // и понеслась проверять...
        if cmd = '!md5' then
          begin
            ////
            SendMessageToUIN(UIN, MD5DigestToStr(MD5String(param)));
          end
        else if cmd = '!anegdot' then
          begin
            ////
            // и т.д.
            SendMessageToUIN(UIN, 'Бугого');
          end;
        end;
    end;
    
    MD5.PAS типа...
    http://www.virustech.org/files/MD5.pas