NodeJS Bot لـ Telegram مع معالجة التعبيرات الرياضية

بداية العمل



أولاً ، نقوم بإنشاء دليل حيث سيتم تخزين البوت نفسه.



دليل فارغ مع بوت



هنا نقوم بتهيئة npm.



npm init


تهيئة Npm



الوحدات المستخدمة



في التطوير ، سأستخدم TypeScript ومكتبة SlimBot .



لتثبيت SlimBot ، نوصي بما يلي:



npm install slimbot


نقوم أيضًا بإنشاء ملف tsconfig.json لـ TypeScript برمز معين:



{
    "compilerOptions": {
        "outDir": "./app/",
        "target": "ES6"
    },
    "include": [
        "./ts/*"
    ]
}


كما نرى ، سيتم تخزين جميع ملفات .ts في مجلد ts ، وسيتم تضمين رمز الروبوت المجمّع في مجلد التطبيق. لذلك ، نقوم بإنشاء مجلد ts و app:



mkdir ts app


يبدو مجلدنا الآن كما يلي:



صورة



ابدأ الترميز



في مجلد ts ، أنشئ ملف Config.ts بهذا الكود:



const config = {
    token: "",
    nameBot: "Math Bot",
    nameBotShort: "MB"
}
export { config };


نرى الرمز المميز ، ولكنه فارغ ، لأننا لم نستلمه بعد ولم ننشئ البوت نفسه في البرقية. للقيام بذلك ، انتقل إلىBotFather وقم بإنشاء برنامج بوت لذلك.



صورةصورة



لقد تلقينا رمزًا مميزًا - 1150111738: AAGs6yfHbDIhgOJVu7LocOqwDYxHrHp2MgM. الآن ضعه في التكوين لدينا.



بمجرد الحصول على التكوين ، الرمز المميز والبوت ، يمكننا إنشاء ملف controller.ts الرئيسي. ستقبل جميع الطلبات. اكتب هذا الرمز في controller.ts:



import { config } from './Config';
import Slimbot from 'slimbot';
const slimbot:Slimbot = new Slimbot(config.token); 

slimbot.on('message', (message)=>{
    console.log(message);
});

slimbot.startPolling();


إذا قمت بكل شيء بشكل صحيح ، فعندما تكتب رسالة ، يتم إرسالها إلى وحدة التحكم الخاصة بنا في شكل كائن JS:



{
  message_id: 1,
  from: {
    id: 866278523,
    is_bot: false,
    first_name: 'Andrey',
    last_name: 'Pavlov',
    username: 'Semi4',
    language_code: 'ru'
  },
  chat: {
    id: 866278523,
    first_name: 'Andrey',
    last_name: 'Pavlov',
    username: 'Semi4',
    type: 'private'
  },
  date: 1593329677,
  text: '/start',
  entities: [ { offset: 0, length: 6, type: 'bot_command' } ]
}


يتم تمثيل الكائن من القيم التالية: من - معلومات من الملف الشخصي الذي تم إرسال الرسالة منه ، الدردشة - المعلومات التي تم من خلالها إرسال الرسالة ، message_id - أي حساب (قراءة رسائل الروبوت) هذه الرسالة ، التاريخ - الوقت بتنسيق UNIX ، النص: نص الرسالة ، و الكيانات - معلومات حول نص الرسالة ، الطول ، الإزاحة ، النوع.



من هنا نستخرج معرف الدردشة والرسالة نفسها. نرسل أيضًا رسالة متطابقة إلى المستخدم:



slimbot.on('message', (message)=>{
    const ID = message.chat.id;
    let text = message.text;
    slimbot.sendMessage(ID, text);
});


تجميع وتشغيل الروبوت ومشاهدتنا.



صورة



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







import formula from 'formula';
const { run } = formula; 


وتحديث معالج الرسائل:



slimbot.on('message', (message)=>{
    const ID = message.chat.id;
    let text = message.text;
    slimbot.sendMessage(ID, run(text));
});


دعونا نطلق فويلا! تكتب تعبيرًا رياضيًا للبوت ويجيب.






CBStudio ونسخ 2020



All Articles