نمایش نتایج 1 تا 40 از 49

نام تاپیک: کار با API ربات تلگرام در دلفی 7

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر جدید
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    بهشت زمین
    پست
    10

    نقل قول: کار با API ربات تلگرام در دلفی 7

    سلام دوست من
    اول اینکه در فایل ضمیمه ای که ارسال کردید، یه فایلی کم هست که باعث شده برنامه اجرا نشه!
    دوم اینکه من مبحث دریافت جواب از منوی
    InlineKeyboardMarkup
    رو اصلا متوجه نشدم و وقتی میخوام از کدهای شما توی برنامه ام استفاده کنم، اصلا برنامه کار نمیکنه و گزینه کلیک شده رو برنمیگردونه!
    سومین مطلب اینکه اگر بخواهیم به همراه متنمون اموجی هم ارسال کنیم، یا متنهای حامل اموجی رو دریافت کنیم، همچنین برای دریافت یک فایل (فایل، تصویر، صوت، فیلم) چه کدی رو استفاده کنیم؟
    ممنون میشم جواب بدید.

  2. #2
    کاربر دائمی آواتار mjdeveloper
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    124

    نقل قول: کار با API ربات تلگرام در دلفی 7

    مشکل
    Error Connecting With SSL با ارتقا به indy 10 باید حل بشه و من این کار رو کردم و مشکل حل شد و دیگه این خطا رو دریافت نکردم.

  3. #3
    کاربر دائمی آواتار mjdeveloper
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    124

    نقل قول: کار با API ربات تلگرام در دلفی 7

    نقل قول نوشته شده توسط alipil مشاهده تاپیک
    سلام دوست من
    اول اینکه در فایل ضمیمه ای که ارسال کردید، یه فایلی کم هست که باعث شده برنامه اجرا نشه!
    دوم اینکه من مبحث دریافت جواب از منوی
    InlineKeyboardMarkup
    رو اصلا متوجه نشدم و وقتی میخوام از کدهای شما توی برنامه ام استفاده کنم، اصلا برنامه کار نمیکنه و گزینه کلیک شده رو برنمیگردونه!
    سومین مطلب اینکه اگر بخواهیم به همراه متنمون اموجی هم ارسال کنیم، یا متنهای حامل اموجی رو دریافت کنیم، همچنین برای دریافت یک فایل (فایل، تصویر، صوت، فیلم) چه کدی رو استفاده کنیم؟
    ممنون میشم جواب بدید.
    1. دوست عزیز من از همین کد استفاده می کنم و خیلی از دوستان دیگه هم بر داشتن و مثل اینکه درست بوده و تونستن اجرا کنن.
    2. برای دریافت فایل هم هنوز کد نزدم که آماده داشته باشم ولی روند کار بصورت زیر هست . که اگر شما زحمتش رو کشیدید برای بقیه هم بذارید و همچنین برای من.

    دریافت فایل:
    1.کاربر عکس به ربات ارسال می کنه .
    2. ربات شما با getupdate پیام رو دریافت میکنه و نتیجه شبیه زیر هست
    {"ok":true,"result":
    [{
    "update_id":839925807,
    "message":{
    "message_id":61,
    "from":
    {
    "id":79060780,
    "first_name":"mehdi",
    "last_name":"Jafari",
    "username":"MjDeveloper",
    "language_code":"en-US"
    },
    "chat":
    {
    "id":79060780,
    "first_name":"mehdi",
    "last_name":"Jafari",
    "username":"MjDeveloper",
    "type":"private"
    },
    "date":1499596170,
    "photo":[{
    "file_id":"AgADBAAD_6gxG1EpEFPNIr8YHIITG08YqRkABMY H8HZUe1inQm0DAAEC",
    "file_size":2734,
    "width":90,
    "height":90}
    ,
    {"file_id":"AgADBAAD_6gxG1EpEFPNIr8YHIITG08YqRkABF U7V07oQYu0QW0DAAEC",
    "file_size":14179,
    "width":200,
    "height":200
    }
    ]}
    }]
    }



    3.شما File_ID رو بر می دارید و مجدد پست می کنید به تلگرام و پاسخی حاوی File_path دریافت می کنید
    4. مثال ارسال پست file_id . به آدرس دقت کنید
    https://api.telegram.org/bot<token>/getfile?file_id=AgADBAAD_6gxG1EpEFPNIr8YHIITG08YqR  kABFU7V07oQYu0QW0DAAEC

    5. نتیجه پست کردن file_id به نلگرام شبیه زیر هست که file_path رو داره
    {"ok":true,"result":{"file_id":"AgADBAAD_6gxG1EpEF  PNIr8YHIITG08YqRkABFU7V07oQYu0QW0DAAEC","file_size  ":14179,"file_path":"photos/file_0.jpg"}}

    6. حالا با استفاده از file_path می تونید لینک دانلود رو بسازید و دانلود کنید
    https://api.telegram.org/file/bot<token>/<file_path>

    برای دریافت عکس:
    https://api.telegram.org/file/bot<token>/photos/file_0.jpg

    دانلود شروع میشه

    ---------------- برای فایل های دیگه مانند document-----------------
    فقط مسیر دانلود متفاوت میشه

    {"ok":true,"result":{"file_id":"BQADBAAD8AADUSkQU1  4d-TTauBAyAg","file_size":100140,"file_path":"documen  ts/esfControl.png"}}


    https://api.telegram.org/file/bot<token>/documents/esfControl.png


    امیدوارم کمکتون کنه.
    حالا اگر فرصت کنم کد براش میزنم و میذارم ولی اگر کسی از دوستان زحمتش رو کشید ممنون میشم کد بذاره بقیه هم استفاده کنن.

    کد دریافت فایل را در این پست مشاهده بفرمایید
    آخرین ویرایش به وسیله mjdeveloper : پنج شنبه 06 مهر 1396 در 16:22 عصر

  4. #4
    کاربر جدید
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    بهشت زمین
    پست
    10

    نقل قول: کار با API ربات تلگرام در دلفی 7

    نقل قول نوشته شده توسط mjdeveloper مشاهده تاپیک
    1. دوست عزیز من از همین کد استفاده می کنم و خیلی از دوستان دیگه هم بر داشتن و مثل اینکه درست بوده و تونستن اجرا کنن.
    2. برای ارسال فایل هم هنوز کد نزدم که آماده داشته باشم ولی روند کار بصورت زیر هست . که اگر شما زحمتش رو کشیدید برای بقیه هم بذارید و همچنین برای من.

    دریافت فایل:
    1.کاربر عکس به ربات ارسال می کنه .
    2. ربات شما با getupdate پیام رو دریافت میکنه و نتیجه شبیه زیر هست
    {"ok":true,"result":
    [{
    "update_id":839925807,
    "message":{
    "message_id":61,
    "from":
    {
    "id":79060780,
    "first_name":"mehdi",
    "last_name":"Jafari",
    "username":"MjDeveloper",
    "language_code":"en-US"
    },
    "chat":
    {
    "id":79060780,
    "first_name":"mehdi",
    "last_name":"Jafari",
    "username":"MjDeveloper",
    "type":"private"
    },
    "date":1499596170,
    "photo":[{
    "file_id":"AgADBAAD_6gxG1EpEFPNIr8YHIITG08YqRkABMY H8HZUe1inQm0DAAEC",
    "file_size":2734,
    "width":90,
    "height":90}
    ,
    {"file_id":"AgADBAAD_6gxG1EpEFPNIr8YHIITG08YqRkABF U7V07oQYu0QW0DAAEC",
    "file_size":14179,
    "width":200,
    "height":200
    }
    ]}
    }]
    }



    3.شما File_ID رو بر می دارید و مجدد پست می کنید به تلگرام و پاسخی حاوی File_path دریافت می کنید
    4. مثال ارسال پست file_id . به آدرس دقت کنید
    https://api.telegram.org/bot<token>/getfile?file_id=AgADBAAD_6gxG1EpEFPNIr8YHIITG08YqR  kABFU7V07oQYu0QW0DAAEC

    5. نتیجه پست کردن file_id به نلگرام شبیه زیر هست که file_path رو داره
    {"ok":true,"result":{"file_id":"AgADBAAD_6gxG1EpEF  PNIr8YHIITG08YqRkABFU7V07oQYu0QW0DAAEC","file_size  ":14179,"file_path":"photos/file_0.jpg"}}

    6. حالا با استفاده از file_path می تونید لینک دانلود رو بسازید و دانلود کنید
    https://api.telegram.org/file/bot<token>/<file_path>

    برای دریافت عکس:
    https://api.telegram.org/file/bot<token>/photos/file_0.jpg

    دانلود شروع میشه

    ---------------- برای فایل های دیگه مانند document-----------------
    فقط مسیر دانلود متفاوت میشه

    {"ok":true,"result":{"file_id":"BQADBAAD8AADUSkQU1  4d-TTauBAyAg","file_size":100140,"file_path":"documen  ts/esfControl.png"}}


    https://api.telegram.org/file/bot<token>/documents/esfControl.png


    امیدوارم کمکتون کنه.
    حالا اگر فرصت کنم کد براش میزنم و میذارم ولی اگر کسی از دوستان زحمتش رو کشید ممنون میشم کد بذاره بقیه هم استفاده کنن.


    ===========


    ممنونم ممنونم
    خیلی خوشحال شدم که جوابمو دادین.
    حتما اگر به دست آوردی رسیدم به دوستان ارائه میدم.

    من dll‌ های مربوط به نسخه 10 رو جایگزین کردم ، indy 10 ‌رو نتونستم دانلود و نصب کنم. اگر indy 10 رو در دلفی نصب کنم، مشکل برطرف میشه؟

    مشکل ارورها موقع قطع اینترنت چطور برطرف میشه؟

    بازم ممنونم از پاسخگویی

  5. #5
    کاربر دائمی آواتار mjdeveloper
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    124

    Cool نقل قول: کار با API ربات تلگرام در دلفی 7

    نقل قول نوشته شده توسط alipil مشاهده تاپیک
    ===========


    ممنونم ممنونم
    خیلی خوشحال شدم که جوابمو دادین.
    حتما اگر به دست آوردی رسیدم به دوستان ارائه میدم.

    من dll‌ های مربوط به نسخه 10 رو جایگزین کردم ، indy 10 ‌رو نتونستم دانلود و نصب کنم. اگر indy 10 رو در دلفی نصب کنم، مشکل برطرف میشه؟

    مشکل ارورها موقع قطع اینترنت چطور برطرف میشه؟

    بازم ممنونم از پاسخگویی
    پروژه باید مجدد روی indy 10 کامپایل بشه و تغییراتی در کد لازم هست : و همچنین dll های ایندی 10 رو کنار برنامه بذارید. صرفا با گذاشتن dll ها کنار نسخه قدیمی مشکل حل نمیشه.

    توابع ارسال پیام متنی و ارسال پیام متنی حاوی کیبورد اینطوری خواهد شد:

    procedure TBotThread.SendMessage(ChatID:String; Text : WideString; parse_mode:string;disable_notification:boolean);Va  r
    Stream: TStringStream;
    Params: TIdMultipartFormDataStream;
    //Text : WideString;
    msg : WideString;
    Src : string;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    begin
    try
    try
    if FShowBotLink then
    Text := Text + LineBreak + FBotUser;
    msg := '/sendmessage';
    Stream := TStringStream.Create('');
    Params := TIdMultipartFormDataStream.Create;
    Params.AddFormField('chat_id',ChatID);
    if parse_mode <> '' then
    Params.AddFormField('parse_mode',parse_mode);
    if disable_notification then
    Params.AddFormField('disable_notification','true')
    else
    Params.AddFormField('disable_notification','false' );
    Params.AddFormField('disable_web_page_preview','tr ue');
    Params.AddFormField('text',UTF8Encode(Text),'utf-8').ContentTransfer:='8bit';
    //Params.AddFormField('text',Text);
    LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    FidHttpSend.ReadTimeout := 30000;
    FidHttpSend.IOHandler:=LHandler;
    LHandler.SSLOptions.Method := sslvTLSv1;
    LHandler.SSLOptions.Mode := sslmClient;
    FidHttpSend.HandleRedirects := true;
    //FidHttpSend.Request.CharSet:= 'UTF-8';
    FidHttpSend.Post(BaseUrl + API + msg, Params, Stream);
    finally
    LHandler.Free;
    Params.Free;
    Stream.Free;
    ENd;
    except
    on E: EIdHTTPProtocolException do
    begin
    if E.ErrorCode = 403 then
    begin
    WriteToLog('Bot was blocked by the user');
    end;
    end;
    end;
    end;


    procedure TBotThread.SendMessageAndKey(ChatID:String; Text : WideString;Keys, parse_mode:string;disable_notification:boolean);
    Var
    Stream: TStringStream;
    Params: TIdMultipartFormDataStream;
    msg : WideString;
    Src : string;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    Json : TMemoryStream;
    btn : string;
    UTF8 : UTF8String;
    BytesCount : integer;
    SaveMsgID : boolean;
    begin
    btn := keys;
    SaveMsgID := False;
    if pos('force_reply',btn) > 0 then
    SaveMsgID := True;
    Json := TMemoryStream.Create;
    UTF8 := AnsiToUtf8(btn);
    BytesCount := Length(UTF8);
    Json.WriteBuffer(UTF8[1], BytesCount);
    Json.Position := 0;
    try
    try
    if FShowBotLink then
    Text := Text + LineBreak + FBotUser;
    msg := '/sendmessage';
    Stream := TStringStream.Create('');
    Params := TIdMultipartFormDataStream.Create;
    Params.AddObject('reply_markup','application/json','UTF-8',Json);
    Params.AddFormField('chat_id',ChatID);
    if parse_mode <> '' then
    Params.AddFormField('parse_mode',parse_mode);
    if disable_notification then
    Params.AddFormField('disable_notification','true')
    else
    Params.AddFormField('disable_notification','false' );
    Params.AddFormField('text',UTF8Encode(Text),'utf-8').ContentTransfer:='8bit';
    LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    FidHttpSend.ReadTimeout := 30000;
    FidHttpSend.IOHandler:=LHandler;
    LHandler.SSLOptions.Method := sslvTLSv1;
    LHandler.SSLOptions.Mode := sslmClient;
    FidHttpSend.HandleRedirects := true;
    FidHttpSend.Post(BaseUrl + API + msg, Params, Stream);
    //fmMain.Memo1.Text := Stream.DataString;
    if SaveMsgID then
    SaveMessageID(Stream.DataString,ChatID);
    finally
    Json.Free;
    LHandler.Free;
    Params.Free;
    Stream.Free;
    ENd;
    except
    on E: EIdHTTPProtocolException do
    begin
    if E.ErrorCode = 403 then
    begin
    WriteToLog('Bot was blocked by the user');
    end;
    end;
    end;
    end;

  6. #6
    کاربر جدید
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    بهشت زمین
    پست
    10

    نقل قول: کار با API ربات تلگرام در دلفی 7

    نقل قول نوشته شده توسط mjdeveloper مشاهده تاپیک
    پروژه باید مجدد روی indy 10 کامپایل بشه و تغییراتی در کد لازم هست : و همچنین dll های ایندی 10 رو کنار برنامه بذارید. صرفا با گذاشتن dll ها کنار نسخه قدیمی مشکل حل نمیشه.

    توابع ارسال پیام متنی و ارسال پیام متنی حاوی کیبورد اینطوری خواهد شد:

    procedure TBotThread.SendMessage(ChatID:String; Text : WideString; parse_mode:string;disable_notification:boolean);Va  r
    Stream: TStringStream;
    Params: TIdMultipartFormDataStream;
    //Text : WideString;
    msg : WideString;
    Src : string;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    begin
    try
    try
    if FShowBotLink then
    Text := Text + LineBreak + FBotUser;
    msg := '/sendmessage';
    Stream := TStringStream.Create('');
    Params := TIdMultipartFormDataStream.Create;
    Params.AddFormField('chat_id',ChatID);
    if parse_mode <> '' then
    Params.AddFormField('parse_mode',parse_mode);
    if disable_notification then
    Params.AddFormField('disable_notification','true')
    else
    Params.AddFormField('disable_notification','false' );
    Params.AddFormField('disable_web_page_preview','tr ue');
    Params.AddFormField('text',UTF8Encode(Text),'utf-8').ContentTransfer:='8bit';
    //Params.AddFormField('text',Text);
    LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    FidHttpSend.ReadTimeout := 30000;
    FidHttpSend.IOHandler:=LHandler;
    LHandler.SSLOptions.Method := sslvTLSv1;
    LHandler.SSLOptions.Mode := sslmClient;
    FidHttpSend.HandleRedirects := true;
    //FidHttpSend.Request.CharSet:= 'UTF-8';
    FidHttpSend.Post(BaseUrl + API + msg, Params, Stream);
    finally
    LHandler.Free;
    Params.Free;
    Stream.Free;
    ENd;
    except
    on E: EIdHTTPProtocolException do
    begin
    if E.ErrorCode = 403 then
    begin
    WriteToLog('Bot was blocked by the user');
    end;
    end;
    end;
    end;


    procedure TBotThread.SendMessageAndKey(ChatID:String; Text : WideString;Keys, parse_mode:string;disable_notification:boolean);
    Var
    Stream: TStringStream;
    Params: TIdMultipartFormDataStream;
    msg : WideString;
    Src : string;
    LHandler: TIdSSLIOHandlerSocketOpenSSL;
    Json : TMemoryStream;
    btn : string;
    UTF8 : UTF8String;
    BytesCount : integer;
    SaveMsgID : boolean;
    begin
    btn := keys;
    SaveMsgID := False;
    if pos('force_reply',btn) > 0 then
    SaveMsgID := True;
    Json := TMemoryStream.Create;
    UTF8 := AnsiToUtf8(btn);
    BytesCount := Length(UTF8);
    Json.WriteBuffer(UTF8[1], BytesCount);
    Json.Position := 0;
    try
    try
    if FShowBotLink then
    Text := Text + LineBreak + FBotUser;
    msg := '/sendmessage';
    Stream := TStringStream.Create('');
    Params := TIdMultipartFormDataStream.Create;
    Params.AddObject('reply_markup','application/json','UTF-8',Json);
    Params.AddFormField('chat_id',ChatID);
    if parse_mode <> '' then
    Params.AddFormField('parse_mode',parse_mode);
    if disable_notification then
    Params.AddFormField('disable_notification','true')
    else
    Params.AddFormField('disable_notification','false' );
    Params.AddFormField('text',UTF8Encode(Text),'utf-8').ContentTransfer:='8bit';
    LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
    FidHttpSend.ReadTimeout := 30000;
    FidHttpSend.IOHandler:=LHandler;
    LHandler.SSLOptions.Method := sslvTLSv1;
    LHandler.SSLOptions.Mode := sslmClient;
    FidHttpSend.HandleRedirects := true;
    FidHttpSend.Post(BaseUrl + API + msg, Params, Stream);
    //fmMain.Memo1.Text := Stream.DataString;
    if SaveMsgID then
    SaveMessageID(Stream.DataString,ChatID);
    finally
    Json.Free;
    LHandler.Free;
    Params.Free;
    Stream.Free;
    ENd;
    except
    on E: EIdHTTPProtocolException do
    begin
    if E.ErrorCode = 403 then
    begin
    WriteToLog('Bot was blocked by the user');
    end;
    end;
    end;
    end;

    خیلی متشکرم آقای جعفری، در مورد ارسال پیام متنی با منویی که زیر آن هست یعنی (InlineKeyboardMarkup) مشکلی نیست، فقط وقتی که کاربر یکی از گزینه های منو رو انتخاب میکنه، اصلا نمیتونم گزینه ی انتخاب شده رو دریافت کنم.
    برنامه ارور میده. در مرحله ی دریافت اطلاعات از روبات (سرور تلگرام) ارور میده. به طوری که حتی اگر بعد از انتخاب منو، پیامهای دیگه ای از سوی کاربر به ربات ارسال شده باشه، اونها رو هم نمیتونه دریافت کنه و کلا برنامه از کار می افته.
    اگر ممکنه خیلی شسته و رفته تر بفرمایید که چجوری متوجه بشم کدوم گزینه انتخاب شده.
    متشکرم

تاپیک های مشابه

  1. سوال: کار با api‌ های تلگرام در دلفی
    نوشته شده توسط hadisalahi2 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 16
    آخرین پست: پنج شنبه 24 تیر 1395, 18:43 عصر
  2. سوال: کار با فایل های متنی در دلفی txt-text
    نوشته شده توسط hassan p.b در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 20
    آخرین پست: یک شنبه 09 شهریور 1393, 01:38 صبح
  3. کار با Windows Agent ها در دلفی
    نوشته شده توسط alidehban در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: یک شنبه 15 فروردین 1389, 09:59 صبح
  4. کار با کامپوننت fast report در دلفی
    نوشته شده توسط nasim_leila در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 4
    آخرین پست: چهارشنبه 02 خرداد 1386, 12:26 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •