تقنية

كيفية إنشاء Telegram Bot لإرسال الإشعارات باستخدام Google Apps Script


هل ترغب في تلقي إشعارات في برنامج Telegram messenger الخاص بك عند إرسال رد نموذج جديد في نماذج Google. أو ربما ترسل تنبيهًا إلى مجموعة Telegram بأكملها عند حدوث حدث مهم.

ستتعلم في هذا البرنامج التعليمي خطوة بخطوة كيفية إنشاء روبوت Telegram جديد وإرسال الرسائل إلى قناة Telegram ومجموعاتها من خلال هذا الروبوت بمساعدة Google Apps Script.

إنشاء بوت تيليجرام جديد

افتح تطبيق telegram على سطح المكتب أو الهاتف المحمول لديك وابحث عن الروبوت @BotFather. هذا هو روبوت Telegram الرسمي الذي يمكنك التفاعل معه لإنشاء برامج الروبوت الخاصة بك وإدارتها.

  1. داخل جلسة الدردشة مع @BotFather، انقر فوق الزر “ابدأ” واكتب الأمر /newbot لإنشاء روبوت Telegram جديد.
  2. قم بتسمية روبوت Telegram الخاص بك باسم قصير ثم قم بتوفير اسم مستخدم لروبوتك. الألغام هي myfirstbotin2021_bot (تم بالفعل أخذ معظم الأسماء الجيدة).
  3. ستزودك Telegram برمز API المميز. قم بتدوين قيمة الرمز المميز لأننا سنطلبها في خطوة لاحقة.

لقد تم إنشاء أول روبوت برقية لك بنجاح. في الخطوة التالية، وهذا أمر مهم، ستحتاج إلى التفاعل مع هذا الروبوت من حساب Telegram الخاص بك.

يمكنك القيام بذلك عن طريق فتح رابط الروبوت الخاص بك – شيء من هذا القبيل t.me/username_bot وانقر على Start زر. يكتب Hello bot! أو أي نص لتدفئة الروبوت.

النشر في مجموعة Telegram

إذا كنت ترغب في نشر رسائل إلى مجموعة Telegram من خلال هذا الروبوت، فأنت بحاجة أولاً إلى إضافة هذا الروبوت كعضو في تلك المجموعة، وجعل الروبوت مسؤولاً عن المجموعة ثم نشر رسالة تمهيدية في تلك المجموعة من مجموعتك الخاصة حساب.

النشر على قناة التليجرام

أخيرًا، إذا كنت ترغب في نشر رسائل إلى قناة Telegram من الروبوت، فيجب إضافة الروبوت كعضو في تلك القناة وترقيته كمسؤول. بعد ذلك، قم بإرسال رسالة إحماء في القناة من حسابك الخاص.

احصل على قائمة بقنوات ومجموعات Telegram

الآن بعد أن تمت إضافة روبوت Telegram الخاص بنا إلى مجموعات وقنوات مختلفة، يمكننا استخدام Google Apps Script للحصول على قائمة بجميع الأماكن التي يمكن للروبوت الوصول إليها لكتابة الرسائل.

افتح محرر Google Script، وقم بتشغيل الكود التالي. تذكر أن تحل محل BOT_TOKEN باستخدام رمز الروبوت الخاص بك.

// Returns a Object of chat_id and names

const getTelegramGroupsAndChannels = () => {
  // Type your Telegram Bot token here
  const BOT_TOKEN = '1986321029:AAF09NbQfA9wdCyLAHsjpoSC43ai0P0VEh4';

  const TELEGRAM_API = `https://api.telegram.org/bot${BOT_TOKEN}/getUpdates`;

  const response = UrlFetchApp.fetch(TELEGRAM_API);

  const { ok, result = [] } = JSON.parse(response);

  if (!ok) {
    throw new Error('Please check your API token again!');
  }

  if (result.length === 0) {
    throw new Error('Please add this bot to a Telegram group or channel!');
  }

  const telegramBotList = {};

  result.forEach((e) => {
    const { message, my_chat_member, channel_post } = e;
    const { chat } = { ...message, ...my_chat_member, ...channel_post };
    const { title, id, username } = chat;
    telegramBotList[id] = { chat_id: `${id}`, title: title || username };
  });

  Logger.log(Object.values(telegramBotList));

  /* Prints an array of groups and channels known to your bot
   {chat_id=300816220, title=labnol},
   {chat_id=-595214405, title=Telegram Group},
   {chat_id=-10547249514, title=Telegram Channel} */
};

نشر الرسائل على Telegram

الآن بعد أن أصبح لدينا قائمة بمجموعات وقنوات Telegram حيث يمتلك الروبوت الإذن بنشر الرسائل، يمكننا بسهولة إرسال رسالة إلى تلك المجموعة باستخدام Telegram API.

أنت في حاجة إلى فريدة من نوعها chat_id للمجموعة أو القناة ورسالتك النصية التي قد تحتوي أيضًا على رموز تعبيرية. إذا كانت لديك رسالة متعددة الأسطر، فتذكر الهروب من السلسلة باستخدام encodeURIComponent بحيث أحرف الخط الجديد \n يتم استبدالها ب %0A وهكذا.

const postMessageToTelegram = () => {
  // Provide the Id of your Telegram group or channel
  const chatId = '-59521405';

  // Enter your message here
  const message = 'How are you 💕';

  const BOT_TOKEN = '1986321029:AAF09NbQfA9wdCyLAHsjpoSC43ai0P0VEh4';

  const TELEGRAM_API = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;

  const text = encodeURIComponent(message);

  const url = `${TELEGRAM_API}?chat_id=${chatId}&text=${text}`;

  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });

  const { ok, description } = JSON.parse(response);

  if (ok !== true) {
    Logger.log(`Error: ${description}`);
  }
};

برقية إرسال رسالة HTML

إرسال إشعارات نصية غنية باستخدام Telegram

بالإضافة إلى النص العادي، يمكنك أيضًا نشر رسائل نصية منسقة مصممة إما بتنسيق HTML أو بتنسيق Markdown. في كلتا الحالتين، تحتاج إلى تعيين parse_mode إلى HTML أو MarkdownV2 اعتمادًا على تنسيق نص الإدخال.

وهنا نفس الشيء sendMessage API ولكن مع نص HTML غني.

const postRichHTMLToTelegram = () => {
  // Chat Id of the Telegram user, group or channel
  const chatId = '-5954105';

  // Rich text with HTML tags and entities
  const message = `Telegram supports different <a href="https://w3.org">HTML5 tags</a>. These include classic tags like <b>bold</b>, <em>emphasis</em>, <strong>strong</strong>, <s>strikethrough</s>, <u>underlines</u>, and <code>preformatted code</code>.`;

  const BOT_TOKEN = '1986321029:AAF09NbQfA9wdCyLAHsjpoSC43ai0P0VEh4';

  const TELEGRAM_API = `https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`;

  // Escape the input text
  const text = encodeURIComponent(message);

  const url = `${TELEGRAM_API}?chat_id=${chatId}&text=${text}&parse_mode=HTML`;

  const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });

  const { ok, description } = JSON.parse(response);

  if (ok !== true) {
    Logger.log(`Error: ${description}`);
  }
};

يرجى ملاحظة أنه إذا كانت علامة HTML غير مدعومة بواسطة Telegram، <H1> أو <TABLE> على سبيل المثال، سيتم رفض رسالتك. انقر هنا لرؤية القائمة الكاملة لعلامات HTML التي يدعمها Telegram.

راجع أيضًا: إرسال إشعارات الدفع باستخدام نماذج Google



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى