সাহায্য:বট তৈরি করা
এটি একটি তথ্যমূলক পাতা। এটি উইকিপিডিয়ার কোনো নীতিমালা বা নির্দেশিকা নয়, বরং এটিতে উইকিপিডিয়ার আদর্শ, রীতিনীতি, প্রযুক্তি বা অনুশীলনের কিছু দিক বর্ণনা করা হয়েছে। এটিতে বিভিন্ন স্তরের ঐকমত্য এবং পর্যবেক্ষণের প্রতিফলন থাকতে পারে। |
রোবট বা বট হলো এক ধরনের স্বয়ংক্রিয় প্রক্রিয়া যা উইকিপিডিয়া (এবং অন্যান্য উইকিমিডিয়া প্রকল্প) এর সাথে এমনভাবে যোগাযোগ করে যেন তারা একজন মানুষ সম্পাদক। এই পাতায় উইকিমিডিয়া প্রকল্পগুলোতে ব্যবহারের জন্য কীভাবে একটি বট তৈরি বা উন্নয়ন করা যায় তা ব্যাখ্যা করার চেষ্টা করা হয়েছে এবং এর অনেকগুলো ধাপ মিডিয়াউইকির ওপর ভিত্তি করে তৈরি অন্যান্য উইকির ক্ষেত্রেও প্রযোজ্য। এই ব্যাখ্যাটি মূলত তাদের কথা মাথায় রেখে তৈরি করা হয়েছে যাদের আগে থেকেই কিছুটা প্রোগ্রামিং অভিজ্ঞতা আছে, কিন্তু সেই জ্ঞান কীভাবে একটি উইকিপিডিয়া বট তৈরিতে প্রয়োগ করতে হয় সে সম্পর্কে নিশ্চিত নন।
আপনার কেন একটি বট তৈরি করা প্রয়োজন হতে পারে?
[সম্পাদনা]বটগুলো বিভিন্ন কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করতে পারে এবং মানুষের তুলনায় অনেক দ্রুত তা সম্পাদন করতে সক্ষম। আপনার যদি এমন কোনো সহজ কাজ থাকে যা অনেকবার করতে হবে (উদাহরণস্বরূপ, ১০০০টি পাতা বিশিষ্ট কোনো বিষয়শ্রেণীর সব পাতায় একটি টেমপ্লেট যুক্ত করা), তবে এই ধরনের কাজ মানুষের চেয়ে বটের মাধ্যমে করাই বেশি সুবিধাজনক।
বট তৈরির আগে বিবেচ্য বিষয়সমূহ
[সম্পাদনা]বিদ্যমান বটগুলোর পুনঃব্যবহার
[সম্পাদনা]প্রায়শই নতুন বট তৈরির চেয়ে বিদ্যমান কোনো বোটকে দিয়ে কাজটি করিয়ে নেওয়া অনেক বেশি সহজ। আপনার যদি মাঝেমধ্যে বোটের প্রয়োজন হয় অথবা আপনি যদি প্রোগ্রামিংয়ে স্বাচ্ছন্দ্যবোধ না করেন, তবে এটিই সাধারণত সেরা সমাধান। এই ধরনের অনুরোধগুলো উইকিপিডিয়া:বট/অনুমোদনের অনুরোধ পাতায় করা যেতে পারে। এছাড়া, সবার ব্যবহারের জন্য বেশ কিছু সরঞ্জাম রয়েছে। এগুলোর বেশিরভাগই মূলত উন্নত মানের ওয়েব ব্রাউজার, যাতে মিডিয়াউইকি-ভিত্তিক বিশেষ কার্যকারিতা যুক্ত থাকে। এর মধ্যে সবচেয়ে জনপ্রিয় হলো অটোউইকিব্রাউজার, যা বিশেষ করে উইকিপিডিয়া এবং অন্যান্য উইকিমিডিয়া প্রকল্পে সম্পাদনায় সহায়তার জন্য তৈরি করা হয়েছে। এই ধরনের সরঞ্জামগুলোর একটি পূর্ণাঙ্গ তালিকা উইকিপিডিয়া:সরঞ্জাম/সম্পাদনা সরঞ্জামসমূহ পাতায় পাওয়া যাবে। AWB-এর মতো সরঞ্জামগুলো সাধারণত প্রোগ্রামিং জ্ঞান ছাড়াই ব্যবহার করা সম্ভব।
পরামর্শ
বিদ্যমান সরঞ্জামগুলো সম্পর্কে জানতে টুলহাব ব্যবহার করুন। |
সোর্স কোড বা ফ্রেমওয়ার্কের ব্যবহার
[সম্পাদনা]কাজের আধিক্য বা নতুনত্বের কারণে আপনি যদি নিজের জন্য একটি বোট তৈরির সিদ্ধান্ত নেন, তবে সেটি একদম শূন্য থেকে শুরু করার প্রয়োজন নেই। উইকিপিডিয়ায় বর্তমানে অনেক বট সচল রয়েছে এবং এগুলোর অনেকগুলোর সোর্স কোড উন্মুক্ত থাকে, যা সামান্য পরিমার্জন করেই ব্যবহার করা সম্ভব। এছাড়া বেশ কিছু স্ট্যান্ডার্ড বোট ফ্রেমওয়ার্কও রয়েছে। বিদ্যমান কোনো বোটের কোড সংশোধন করা বা ফ্রেমওয়ার্ক ব্যবহার করা আপনার ডেভেলপমেন্টের সময় অনেক কমিয়ে দেয়। যেহেতু এই কোডগুলো সাধারণত কমিউনিটি কর্তৃক রক্ষণাবেক্ষণ করা হয়, তাই এগুলোর মাধ্যমে তৈরি বোটগুলোর অনুমোদন পাওয়া অনেক বেশি সহজ হয়। সবচেয়ে জনপ্রিয় ফ্রেমওয়ার্ক হলো পাইউইকিবোট (PWB), যা পাইথন ভাষায় লেখা। এটি অত্যন্ত বিস্তারিতভাবে নথিবদ্ধ এবং পরীক্ষিত; এবং এর অনেকগুলো স্ট্যান্ডার্ড স্ক্রিপ্ট (বোট নির্দেশিকা) আগে থেকেই তৈরি আছে। অন্যান্য ফ্রেমওয়ার্কের তালিকা নিচে পাওয়া যাবে। পাইউইকিবোটের মতো ফ্রেমওয়ার্কগুলো সফলভাবে চালানোর জন্য স্ক্রিপ্ট সম্পর্কে সাধারণ ধারণা থাকাই যথেষ্ট (তবে ফ্রেমওয়ার্কগুলো নিয়মিত আপডেট রাখা জরুরি)।
গুরুত্বপূর্ণ প্রশ্নসমূহ
[সম্পাদনা]একটি নতুন বোট লেখার জন্য উল্লেখযোগ্য প্রোগ্রামিং দক্ষতা প্রয়োজন। নিয়মিত ব্যবহারের অনুমোদন পাওয়ার আগে একটি সম্পূর্ণ নতুন বোটকে ব্যাপক পরীক্ষার মধ্য দিয়ে যেতে হয়। একটি সফল বোট তৈরির জন্য সুপরিকল্পনা অপরিহার্য। সেক্ষেত্রে নিচের বিষয়গুলো বিবেচনা করা জরুরি:
- বোটটি কি ম্যানুয়ালি (মানুষের সহায়তায়) চালানো হবে নাকি এটি সম্পূর্ণ স্বয়ংক্রিয় হবে?
- আপনি কি বোটটি একা তৈরি করবেন নাকি অন্য প্রোগ্রামারদের সাহায্য নেবেন?
- বোটের অনুরোধ, সম্পাদনা বা অন্যান্য কাজের কি লগ রাখা হবে? যদি রাখা হয়, তবে সেই লগগুলো কি লোকাল স্টোরেজে থাকবে নাকি উইকি পাতায় সংরক্ষণ করা হবে?
- বোটটি কি ওয়েব ব্রাউজারের ভেতরে চলবে (যেমন: জাভাস্ক্রিপ্টে লেখা), নাকি এটি একটি স্বতন্ত্র প্রোগ্রাম হবে?
- যদি এটি একটি স্বতন্ত্র প্রোগ্রাম হয়, তবে সেটি কি আপনার নিজের কম্পিউটারে চলবে নাকি কোনো রিমোট সার্ভারে (যেমন: টুলফোর্জ) চালানো হবে?
- যদি বোটটি রিমোট সার্ভারে চলে, তবে অন্য কোনো সম্পাদক কি সেটি পরিচালনা বা চালু করার সুযোগ পাবেন?
উইকিপিডিয়া বট কীভাবে কাজ করে?
[সম্পাদনা]পরিচালনার সংক্ষিপ্ত বিবরণ
[সম্পাদনা]
একজন মানব সম্পাদকের মতোই একটি উইকিপিডিয়া বট উইকিপিডিয়ার পাতাগুলো পড়ে এবং যেখানে পরিবর্তন প্রয়োজন বলে মনে করে, সেখানেই পরিবর্তন করে। তফাৎ শুধু এটুকুই যে, বট মানুষের চেয়ে অনেক দ্রুত এবং ক্লান্তহীন হলেও, এগুলো মানুষের মতো বুদ্ধিমান নয়। বট মূলত পুনরাবৃত্তিমূলক কাজ এবং সহজে সংজ্ঞায়িত করা যায় এমন প্যাটার্ন নিয়ে কাজ করার জন্য উপযোগী, যেখানে খুব কম সিদ্ধান্ত নেওয়ার প্রয়োজন পড়ে।
সবচেয়ে সাধারণ ক্ষেত্রে, একটি বট তার নিজস্ব অ্যাকাউন্টে লগ ইন করে এবং ব্রাউজারের মতোই উইকিপিডিয়া থেকে পাতার অনুরোধ করে—যদিও এটি স্ক্রিনে পাতাটি প্রদর্শন করে না, বরং মেমরিতে রেখে কাজ করে। এরপর এটি প্রোগ্রামগতভাবে পাতার কোড পরীক্ষা করে দেখে যে কোনো পরিবর্তনের প্রয়োজন আছে কি না। এরপর এটি যেভাবে ডিজাইন করা হয়েছে, সেই অনুযায়ী সম্পাদনা জমা দেয়।
যেহেতু বট মানুষের মতোই পাতাগুলো অ্যাক্সেস করে, তাই মানুষের মতো বটগুলোও একই ধরনের সমস্যার সম্মুখীন হতে পারে। যেমন: সম্পাদনা সংঘাত, পাতার টাইম-আউট হওয়া বা পাতা লোড করার সময় অপ্রত্যাশিত জটিলতা। যেহেতু একজন মানুষের তুলনায় একটি বট অনেক বেশি কাজ করে, তাই বটের ক্ষেত্রে এই সমস্যাগুলো হওয়ার সম্ভাবনা বেশি থাকে। ফলে একটি বট লেখার সময় এই পরিস্থিতিগুলো বিবেচনা করা গুরুত্বপূর্ণ।
বটের জন্য এপিআই
[সম্পাদনা]উইকিপিডিয়া পাতায় পরিবর্তন করার জন্য একটি বটকে অবশ্যই উইকিপিডিয়া থেকে পাতা সংগ্রহ করতে হয় এবং সম্পাদনা ফেরত পাঠাতে হয়। এজন্য বেশ কিছু অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস উপলব্ধ রয়েছে:
- MediaWiki API (
api.php): এই লাইব্রেরিটি বিশেষভাবে বট বা স্বয়ংক্রিয় প্রক্রিয়ার কোয়েরি এবং সম্পাদনা জমা দেওয়ার জন্য তৈরি করা হয়েছে। এর ডেটা জেসন ফরম্যাটে পাওয়া যায়।- অবস্থা: এটি মিডিয়াউইকির একটি বিল্ট-ইন ফিচার এবং সমস্ত উইকিমিডিয়া সার্ভারে উপলব্ধ।
- বিশেষ:Export: এর মাধ্যমে এক্সএমএল ফর্মে প্রচুর পরিমাণ পাতার বিষয়বস্তু রপ্তানি করা যায়।
- কাঁচা পাতা প্রক্রিয়াকরণ: index.php-এ
action=rawকমান্ড পাঠিয়ে পাতার অসংProcessed উইকিটেক্সট সোর্স কোড পাওয়া যায়।
যদি আপনি বিদ্যমান কোনো 'বট ফ্রেমওয়ার্ক' ব্যবহার করেন, তবে এই ধরনের নিম্ন-স্তরের অপারেশনগুলো সেই ফ্রেমওয়ার্কই পরিচালনা করবে।
লগ ইন করা
[সম্পাদনা]অনুমোদিত বটগুলোকে সম্পাদনা করার জন্য লগ ইন থাকতে হয়। যদিও লগ ইন না করেই পাতা পড়া সম্ভব, তবে পরীক্ষা শেষ হওয়া বটগুলোর সব কাজের জন্যই লগ ইন করা উচিত। বট ফ্ল্যাগসহ লগ ইন করা অ্যাকাউন্টগুলো মিডিয়াউইকি এপিআই থেকে বেশি পরিমাণ তথ্য সংগ্রহ করতে পারে।
লগ ইন এবং কুকি ব্যবস্থাপনার জন্য বট ফ্রেমওয়ার্ক ব্যবহারের পরামর্শ দেওয়া হয়। জনপ্রিয় ফ্রেমওয়ার্কের মধ্যে রয়েছে পাইথনের জন্য pywikibot এবং নোড.জেএস-এর জন্য mwn।
মিডিয়াউইকি এপিআই ব্যবহার করে লগ ইন করতে দুটি ধাপ প্রয়োজন: ১. একটি লগইন টোকেন পাওয়ার জন্য GET রিকোয়েস্ট পাঠানো। ২. লগইন সম্পন্ন করার জন্য প্রয়োজনীয় তথ্যসহ (ইউজারনেম, পাসওয়ার্ড, টোকেন) POST রিকোয়েস্ট পাঠানো।
একটি সফল লগইন প্রচেষ্টার ফলে উইকিমিডিয়া সার্ভার বেশ কিছু HTTP cookie সেট করবে। বটকে অবশ্যই এই কুকিগুলো সংরক্ষণ করতে হবে এবং প্রতিবার অনুরোধ পাঠানোর সময় সেগুলো ফেরত পাঠাতে হবে (এটি সম্পাদনার জন্য অত্যন্ত গুরুত্বপূর্ণ)। প্রধান অ্যাকাউন্ট দিয়ে সরাসরি লগ ইন করা বর্তমানে নিরুৎসাহিত করা হয়; এর পরিবর্তে বিশেষ:BotPasswords ব্যবহার করা উচিত।
সম্পাদনা; সম্পাদনা টোকেন
[সম্পাদনা]উইকিপিডিয়ায় পাতা সম্পাদনা বা রোলব্যাক করার মতো পরিবর্তনের ক্ষেত্রে সম্পাদনা টোকেন পদ্ধতি ব্যবহৃত হয়। এই টোকেনটি একটি দীর্ঘ হেক্সাডেসিমেল সংখ্যার মতো দেখতে হয়, যার শেষে '+\' থাকে। উদাহরণস্বরূপ: d41d8cd98f00b204e9800998ecf8427e+\। সম্পাদনা টোকেনের মূল ভূমিকা হলো "সম্পাদনা হাইজ্যাকিং" রোধ করা।
সম্পাদনা প্রক্রিয়ায় দুটি HTTP অনুরোধ জড়িত থাকে। প্রথমে একটি সম্পাদনা টোকেনের জন্য অনুরোধ করতে হয়। এরপর সেই টোকেনসহ পাতার নতুন বিষয়বস্তু পাঠিয়ে দ্বিতীয় অনুরোধটি করতে হয়। একটি একক HTTP অনুরোধে সম্পাদনা করা সম্ভব নয়।
যদি কোনো বট হেক্সাডেসিমেল কোড ছাড়া শুধু '+\' টোকেন পায়, তবে বুঝতে হবে বটটি লগ ইন করা নেই। বটগুলোকে অবশ্যই assertion ব্যবহার করা উচিত যাতে নিশ্চিত হওয়া যায় যে তারা লগ ইন অবস্থায় আছে।
সম্পাদনা সংঘাত
[সম্পাদনা]যখন একই সময়ে একটি পাতায় একাধিক সম্পাদনা করার চেষ্টা করা হয়, তখন সম্পাদনা সংঘাত ঘটে। প্রায় প্রতিটি বটই কোনো না কোনো সময় এই সমস্যায় পড়ে। তাই বটগুলোতে এই সমস্যা পরীক্ষা করার এবং সমাধান করার ব্যবস্থা থাকা উচিত।
সাধারণত, যদি একটি সম্পাদনা সম্পন্ন করতে ব্যর্থ হয়, তবে বটের উচিত নতুন করে সম্পাদনা করার আগে পাতাটি পুনরায় পরীক্ষা করা এবং এটি নিশ্চিত করা যে সম্পাদনাটি তখনও প্রয়োজনীয় কি না। এছাড়া, বারবার সম্পাদনা সাবমিট করার সময় বটকে সতর্ক থাকতে হবে যাতে এটি কোনো লুপ বা সম্পাদনা যুদ্ধে জড়িয়ে না পড়ে।
বট তৈরি প্রক্রিয়ার সংক্ষিপ্ত বিবরণ
[সম্পাদনা]আসলে, একটি বট কোডিং করা বা লেখা বট তৈরির একটি অংশ মাত্র। আপনার বটটি যেন উইকিপিডিয়ার বট তৈরির নীতিমালা অনুসরণ করে তা নিশ্চিত করতে সাধারণত নিচের উন্নয়ন চক্রটি অনুসরণ করা উচিত। এই নীতি মেনে না চললে আপনার বটটি অনুমোদন পেতে ব্যর্থ হতে পারে বা উইকিপিডিয়া সম্পাদনা করা থেকে অবরুদ্ধ হতে পারে।

ধারণা
[সম্পাদনা]- উইকিপিডিয়া বট তৈরির প্রথম কাজ হলো এর প্রয়োজনীয়তাগুলো খুঁজে বের করা বা একটি ধারণা তৈরি করা। আপনি বট দিয়ে কী কাজ করাবেন তার কোনো ধারণা না থাকলে, বট দ্বারা সম্পাদনের জন্য অনুরোধের তালিকা থেকে ধারণা নিতে পারেন।
- আপনি বট দিয়ে যা করাতে চান, তা আগে থেকেই অন্য কোনো বট করছে কি না তা নিশ্চিত করুন। বটগুলো বর্তমানে কী কী কাজ করছে তা দেখতে বর্তমানে চালু থাকা বটগুলোর তালিকা দেখুন।
সুনির্দিষ্ট বিবরণ
[সম্পাদনা]- সুনির্দিষ্ট বিবরণ বা স্পেসিফিকেশন হলো তৈরি হতে যাওয়া সফটওয়্যারটির কাজ নিখুঁতভাবে বর্ণনা করা। এটি কী কাজ করবে তার একটি বিস্তারিত প্রস্তাব আপনার তৈরি করা উচিত। এই প্রস্তাবটি কয়েকজন সম্পাদকের সাথে আলোচনা করার চেষ্টা করুন এবং তাদের মতামতের ভিত্তিতে এটি পরিমার্জন করুন। অন্য সম্পাদকদের ভালো ধারণা যুক্ত করার মাধ্যমে আপনার ধারণাকেও আরও চমৎকার করা যেতে পারে।
- সবচেয়ে মৌলিক দিক থেকে, আপনার প্রস্তাবিত বটটিকে অবশ্যই নিচের মানদণ্ডগুলো পূরণ করতে হবে:
- বটটিকে ক্ষতিকারক হওয়া যাবে না (বিশ্বকোষের স্বাভাবিক পরিচালনায় ব্যাঘাত ঘটাতে পারে এমন কোনো সম্পাদনা এটি করতে পারবে না)।
- বটটিকে কার্যকরী হতে হবে (এটি একজন মানব সম্পাদকের চেয়ে বেশি দক্ষতার সাথে দরকারী কাজ করবে)।
- বটটি সার্ভারের সম্পদের অপচয় করবে না।
সফটওয়্যার আর্কিটেকচার
[সম্পাদনা]- আপনি কীভাবে বটটি তৈরি করতে পারেন এবং কোন প্রোগ্রামিং ভাষা ও টুলস ব্যবহার করবেন তা নিয়ে ভাবুন। আর্কিটেকচার বা কাঠামোগত নকশার উদ্দেশ্য হলো সফটওয়্যার সিস্টেমটি যেন প্রজেক্টের বর্তমান প্রয়োজনীয়তা পূরণ করে এবং ভবিষ্যতের প্রয়োজনীয়তাগুলোও মেটাতে পারে তা নিশ্চিত করা। নির্দিষ্ট কিছু প্রোগ্রামিং ভাষা অন্যগুলোর তুলনায় নির্দিষ্ট কাজের জন্য বেশি উপযুক্ত। আরও বিস্তারিত জানতে § Programming languages and libraries দেখুন।
বাস্তবায়ন
[সম্পাদনা]বাস্তবায়ন (বা কোডিং) হলো নকশা এবং পরিকল্পনাকে কোডে রূপান্তর করা। এটি সফটওয়্যার ইঞ্জিনিয়ারিং কাজের সবচেয়ে স্পষ্ট অংশ হতে পারে, তবে এটি অপরিহার্যভাবে সবচেয়ে বড় অংশ নয়। বাস্তবায়ন পর্যায়ে আপনার যা করা উচিত:
- আপনার বটের জন্য একটি অ্যাকাউন্ট তৈরি করুন। লগ ইন থাকা অবস্থায় আপনার অ্যাকাউন্টের সাথে যুক্ত করতে এখানে ক্লিক করে অ্যাকাউন্ট তৈরি করুন। (লগ ইন থাকা অবস্থায় বটের অ্যাকাউন্ট তৈরি না করলে, মালিকানা যাচাই না হওয়া পর্যন্ত এটি সম্ভাব্য সকপাপেট বা অননুমোদিত বট হিসেবে অবরুদ্ধ হওয়ার আশঙ্কা থাকে)।
- আপনার বটের জন্য একটি ব্যবহারকারী পাতা তৈরি করুন। আপনার নিজের অ্যাকাউন্ট থেকে বটের সম্পাদনা করা উচিত নয়। বটের নিজস্ব ব্যবহারকারী নাম এবং পাসওয়ার্ডসহ একটি আলাদা অ্যাকাউন্ট থাকতে হবে।
- বটের ব্যবহারকারী পাতায়ও এর সম্পর্কে তথ্য যুক্ত করুন। প্রতিটি কাজের জন্য অনুমোদনের পাতায় (অনুমোদিত হোক বা না হোক) একটি লিঙ্ক যুক্ত করা ভালো ধারণা।
টেস্টিং বা পরীক্ষা
[সম্পাদনা]বট তৈরি করার সময় এটি পরীক্ষা করার একটি ভালো উপায় হলো, লাইভ উইকিতে সরাসরি সম্পাদনা করার বদলে এটি কোনো পাতায় কী কী পরিবর্তন করত তা প্রদর্শন করানো। কিছু বট ফ্রেমওয়ার্কের (যেমন: pywikibot) এই পরিবর্তন বা 'diffs' দেখানোর জন্য আগে থেকেই কোড করা মেথড থাকে। অনুমোদন প্রক্রিয়ার সময়, বটটিকে সম্ভবত একটি পরীক্ষামূলক মেয়াদ (সাধারণত কতটি সম্পাদনা করবে বা কত দিন চলবে তার সীমাবদ্ধতাসহ) দেওয়া হবে, যার মধ্যে এটি বাগ সংশোধন বা সূক্ষ্ম সমন্বয় করার জন্য বাস্তবে সম্পাদনা করতে পারে। ট্রায়াল বা পরীক্ষামূলক মেয়াদের শেষে, যদি সবকিছু পরিকল্পনা অনুযায়ী চলে, তবে বটটি পূর্ণাঙ্গভাবে পরিচালনার জন্য অনুমোদন পাবে।
নথিপত্র বা ডকুমেন্টেশন
[সম্পাদনা]ভবিষ্যতের রক্ষণাবেক্ষণ এবং উন্নতির জন্য আপনার বটের অভ্যন্তরীণ নকশার ডকুমেন্টেশন বা নথিপত্র তৈরি করা একটি গুরুত্বপূর্ণ (এবং প্রায়শই উপেক্ষিত) কাজ। আপনি যদি অন্যদের আপনার বটের ক্লোন বা অনুলিপি ব্যবহার করার অনুমতি দিতে চান, তবে এটি বিশেষভাবে গুরুত্বপূর্ণ। আপনি চাইলে আপনার বটের সোর্স কোড এর ব্যবহারকারী পাতায় বা রিভিশন কন্ট্রোল সিস্টেমে (দেখুন #মুক্ত উৎস বট) পোস্ট করতে পারেন। সহজে ব্যবহারের জন্য এই কোডটি ভালোভাবে ডকুমেন্টেড (সাধারণত কমেন্ট ব্যবহার করে) হওয়া উচিত।
প্রশ্ন/অভিযোগ
[সম্পাদনা]আপনার বটের কাজ নিয়ে ব্যবহারকারীর আলাপ পাতায় আসা প্রশ্ন বা আপত্তির জবাব দেওয়ার জন্য প্রস্তুত থাকা উচিত। বিশেষ করে যদি এটি কোনো স্পর্শকাতর ক্ষেত্রে কাজ করে, যেমন: ফেয়ার-ইউজ চিত্র পরিষ্করণ।
রক্ষণাবেক্ষণ
[সম্পাদনা]নতুন আবিষ্কৃত বাগ বা নতুন প্রয়োজনীয়তার সাথে মানিয়ে নিতে আপনার বটের রক্ষণাবেক্ষণ এবং উন্নতি করতে সফটওয়্যারটির প্রাথমিক বিকাশের চেয়ে অনেক বেশি সময় লাগতে পারে। রক্ষণাবেক্ষণ সহজ করতে শুরু থেকেই আপনার কোড ডকুমেন্ট করে রাখুন।
অনুমোদিত বটগুলোর বড় ধরনের কার্যকারিতার পরিবর্তন অবশ্যই অনুমোদিত হতে হবে।
বট চালানোর জন্য সাধারণ নির্দেশিকা
[সম্পাদনা]অফিশিয়াল বট নীতি (যা বট তৈরির সময় বিবেচনার প্রধান বিষয়গুলো কভার করে) ছাড়াও, বট তৈরির সময় বিবেচনার জন্য বেশ কয়েকটি সাধারণ ও পরামর্শমূলক বিষয় রয়েছে।
বটের ক্ষেত্রে সর্বোত্তম অনুশীলন
[সম্পাদনা]- উইকিমিডিয়া ইউজার-এজেন্ট নীতি অনুসারে আপনার বটের জন্য একটি কাস্টম ইউজার-এজেন্ট হেডার সেট করুন। তা না হলে আপনার বটটি এরর বা ত্রুটির সম্মুখীন হতে পারে এবং সার্ভার স্তরে প্রযুক্তিগত কর্মীদের দ্বারা ব্লক হতে পারে।
- সর্বোচ্চ ৫ সেকেন্ড ল্যাগ রেখে maxlag প্যারামিটার ব্যবহার করুন। এটি সার্ভারের লোড কম থাকলে বটটিকে দ্রুত চলতে এবং সার্ভারের লোড বেশি থাকলে বটটিকে নিয়ন্ত্রণ করতে সাহায্য করবে।
- যদি ম্যাক্সল্যাগ সমর্থন করে না এমন কোনো ফ্রেমওয়ার্কে বট লেখেন, তবে মোট রিকোয়েস্ট (রিড এবং রাইট মিলে) প্রতি মিনিটে ১০টির বেশি যেন না হয় সেদিকে লক্ষ্য রাখুন।
- যখনই সম্ভব এপিআই ব্যবহার করুন এবং মোট রিকোয়েস্টের সংখ্যা ন্যূনতম রাখতে সার্ভারের অনুমোদিত সর্বোচ্চ মানের কোয়েরি লিমিট সেট করুন।
- রিড রিকোয়েস্টের চেয়ে এডিট (রাইট) রিকোয়েস্ট সার্ভারের জন্য বেশি ব্যয়বহুল। কোড এমনভাবে ডিজাইন করুন যেন সম্পাদনা ন্যূনতম থাকে।
- সম্পাদনা একত্রিত করার চেষ্টা করুন। ১০টি ছোট সম্পাদনার চেয়ে একটি বড় সম্পাদনা অনেক ভালো।
- সম্ভব হলে আপনার HTTP ক্লায়েন্ট লাইব্রেরিতে HTTP পারসিস্টেন্ট সংযোগ এবং কম্প্রেশন চালু করুন।
- মাল্টি-থ্রেডেড রিকোয়েস্ট করবেন না। একটি সার্ভার রিকোয়েস্ট সম্পূর্ণ হওয়ার পর আরেকটি শুরু করুন।
- সার্ভার থেকে এরর পেলে সাময়িক বিরতি নিন। টাইমআউটের মতো ত্রুটিগুলো প্রায়ই সার্ভারে ভারী লোডের ইঙ্গিত দেয়। বারবার করা রিকোয়েস্টের মাঝে ধীরে ধীরে বিলম্বের সময় বাড়ানোর পদ্ধতি ব্যবহার করুন।
- আপনার বট লগ ইন করা আছে কি না তা নিশ্চিত করতে assertion ব্যবহার করুন।
- বড় আকারের স্বয়ংক্রিয় রান শুরু করার আগে আপনার কোড পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন। পরীক্ষামূলক রানে প্রতিটি সম্পাদনা যাচাই করুন যাতে কোনো ভুল না থাকে।
বটের যেসব সাধারণ ফিচার আপনার বিবেচনা করা উচিত
[সম্পাদনা]ম্যানুয়াল সহায়তা
[সম্পাদনা]যদি আপনার বট এমন কোনো কাজ করে যেখানে বিচার বা প্রাসঙ্গিকতা মূল্যায়নের প্রয়োজন হয় (যেমন: বানান সংশোধন), তবে বটটিকে 'ম্যানুয়াল অ্যাসিস্টেড' করার কথা বিবেচনা করুন। অর্থাৎ, সংরক্ষণ করার আগে একজন মানুষ সমস্ত সম্পাদনা যাচাই করবেন। এটি বটের গতি উল্লেখযোগ্যভাবে কমিয়ে দেয় ঠিকই, কিন্তু ত্রুটির পরিমাণও অনেকাংশে কমায়।
বট নিষ্ক্রিয়করণ
[সম্পাদনা]আপনার বটটিকে দ্রুত নিষ্ক্রিয় করা সহজ হওয়া উচিত। বট যদি ভুল কাজ করতে শুরু করে, তবে তা পরিষ্কার করার দায়িত্ব আপনার! এর আলাপ পাতায় কোনো বার্তা রাখা হলে আপনি বটটিকে কাজ করা থেকে বিরত রাখতে পারেন, কারণ বার্তাটি এর কার্যকলাপের বিরুদ্ধে কোনো অভিযোগ হতে পারে। এটি এপিআই meta=userinfo কোয়েরি ব্যবহার করে পরীক্ষা করা যেতে পারে (উদাহরণ)। অথবা আপনি এমন একটি পাতা তৈরি করতে পারেন যা পরিবর্তিত হলে বটটি বন্ধ হয়ে যাবে; প্রতিটি সম্পাদনার আগে পাতার বিষয়বস্তু লোড করে এটি চেক করা যেতে পারে।
স্বাক্ষর
[সম্পাদনা]উইকিপিডিয়ায় আলাপ পাতায় সম্পাদনা করার সময় একজন মানুষের মতো আপনার বটেরও চারটি টিল্ডা (~~~~) দিয়ে স্বাক্ষর করা উচিত। স্বাক্ষর কেবলমাত্র আলাপ নামস্থানগুলোতে ব্যবহার করা হয়, তবে আলোচনার জন্য ব্যবহৃত প্রজেক্ট পাতাগুলো এর ব্যতিক্রম (যেমন: অপসারণের প্রস্তাবনা)।
বট ফ্ল্যাগ
[সম্পাদনা]বটের সম্পাদনাগুলো সাম্প্রতিক পরিবর্তনসমূহ-এ দৃশ্যমান হবে, যদি না সম্পাদনাগুলোকে বট হিসেবে চিহ্নিত করা হয়। বটটি অনুমোদিত হওয়ার এবং বট ফ্ল্যাগ পাওয়ার পর, বিশেষ:সাম্প্রতিক পরিবর্তনসমূহ-এ এর সম্পাদনাগুলো লুকাতে এপিআই কলে "bot=True" যোগ করা যেতে পারে - দেখুন mw:API:Edit#Parameters। পাইথনে mwclient বা wikitools ব্যবহার করার সময় সম্পাদনা/সংরক্ষণ আদেশে bot=True যোগ করলে সম্পাদনাটি বট সম্পাদনা হিসেবে সেট হবে - যেমন PageObject.edit(text=pagetext, bot=True, summary=pagesummary)।
বটের স্ট্যাটাস পর্যবেক্ষণ
[সম্পাদনা]যদি বটটি সম্পূর্ণ স্বয়ংক্রিয় হয় এবং নিয়মিত সম্পাদনা করে, তবে এটি নির্দেশিত উপায়ে চলছে কি না এবং সফটওয়্যার আপডেটের কারণে এর আচরণ পরিবর্তিত হয়েছে কি না তা পর্যায়ক্রমে আপনার পরীক্ষা করা উচিত। বট কাজ করা বন্ধ করে দিলে বিজ্ঞপ্তি পেতে একে বট কার্যকলাপ মনিটরে যুক্ত করার বিষয়টি বিবেচনা করুন।
মুক্ত উৎস বট
[সম্পাদনা]অনেক বট পরিচালক তাদের কোড উন্মুক্ত উৎস বা ওপেন সোর্স হিসেবে প্রকাশ করেন। বিশেষ করে অত্যন্ত জটিল বটের ক্ষেত্রে অনুমোদনের আগেই কোডটি উন্মুক্ত করার প্রয়োজন হতে পারে। আপনার কোড উন্মুক্ত রাখার বেশ কিছু সুবিধা রয়েছে:
- এটি অন্যদের আপনার কোডের সম্ভাব্য বাগ বা ত্রুটিগুলো পর্যালোচনা করার সুযোগ দেয়। সাধারণ লেখার মতোই, একজন লেখকের পক্ষে নিজের লেখা কোড যথাযথভাবে পর্যালোচনা করা অনেক সময় কঠিন হয়ে দাঁড়ায়।
- অন্যরা আপনার কোড ব্যবহার করে তাদের নিজস্ব বট তৈরি করতে পারে। নতুন বট লেখকরা আপনার কোডকে উদাহরণ বা টেমপ্লেট হিসেবে ব্যবহার করার সুযোগ পায়।
- এটি 'গোপনীয়তার মাধ্যমে নিরাপত্তা'র বদলে 'পরিকল্পিত নিরাপত্তা'র অভ্যাসকে উৎসাহিত করে।
- আপনি যদি প্রকল্পটি ছেড়ে দেন, তবে অন্য ব্যবহারকারীরা নতুন করে কোড না লিখেই আপনার বটের কাজগুলো চালিয়ে নিতে পারেন।
ওপেন সোর্স কোড বাধ্যতামূলক না হলেও, উইকিপিডিয়ার উন্মুক্ত এবং স্বচ্ছ প্রকৃতির সাথে মিল রেখে একে সবসময় উৎসাহিত করা হয়।
কোড শেয়ার করার আগে অবশ্যই নিশ্চিত করুন যে পাসওয়ার্ডের মতো সংবেদনশীল তথ্যগুলো এমন একটি আলাদা ফাইলে আছে যা সর্বজনীন করা হয়নি।
যারা তাদের কোড উন্মুক্ত করতে চান তাদের জন্য অনেক বিকল্প রয়েছে। বটের ব্যবহারকারী পাতার উপপাতায় কোড রাখা কিছুটা ঝামেলার হতে পারে। এর চেয়ে ভালো সমাধান হলো একটি সংস্করণ নিয়ন্ত্রণ ব্যবস্থা যেমন: এসভিএন, গিট বা মারকিউরিয়াল ব্যবহার করা। উইকিপিডিয়াতে বিভিন্ন সংস্করণ নিয়ন্ত্রণ সফটওয়্যারের তুলনা এবং ওপেন সোর্স সফটওয়্যার হোস্টিং সুবিধার তুলনা নিয়ে নিবন্ধ রয়েছে, যার অনেকগুলোই বিনামূল্যে ব্যবহার করা যায়।
প্রোগ্রামিং ভাষা এবং লাইব্রেরি
[সম্পাদনা]উইকিপিডিয়া বট প্রায় যেকোনো প্রোগ্রামিং ভাষায় লেখা সম্ভব। কোন ভাষা ব্যবহার করা হবে তা মূলত বট লেখকের অভিজ্ঞতা, পছন্দ এবং বট তৈরির জন্য প্রয়োজনীয় লাইব্রেরির সহজলভ্যতার ওপর নির্ভর করে। নিচে বট তৈরির জন্য ব্যবহৃত সাধারণ কিছু ভাষার তালিকা দেওয়া হলো:
অওক
[সম্পাদনা]জিএনইউ অওক ছোট এবং বড় উভয় ধরনের বট তৈরির জন্য একটি সহজ ভাষা।
- ফ্রেমওয়ার্ক এবং লাইব্রেরি: বটউইকিঅওক
- উদাহরণ: গ্রিন-সি এর গিটহাব অ্যাকাউন্টে বটের উদাহরণ পাওয়া যাবে।
পার্ল
[সম্পাদনা]যদি আপনার বটটি কোনো ওয়েবসার্ভারে থাকে, তবে আপনি ব্রাউজার থেকে কমন গেটওয়ে ইন্টারফেস ব্যবহার করে এটি পরিচালনা করতে পারেন। আপনার ইন্টারনেট সার্ভিস প্রোভাইডার যদি ওয়েবস্পেস প্রদান করে, তবে সম্ভবত আপনি সেখানে পার্ল ব্যবহার করার সুযোগ পাবেন।
লাইব্রেরি:
- মিডিয়াউইকি::এপিআই – মিডিয়াউইকি চালিত সাইটগুলো থেকে ডেটা সংগ্রহ এবং সম্পাদনা স্বয়ংক্রিয় করার জন্য একটি মৌলিক ইন্টারফেস।
- মিডিয়াউইকি::বট – পার্ল ভাষায় লেখা একটি পূর্ণাঙ্গ বট ফ্রেমওয়ার্ক।
বট প্রোগ্রামিংয়ের জন্য পিএইচপি ব্যবহার করা যেতে পারে। মিডিয়াউইকি ডেভেলপাররা সাধারণত পিএইচপি-র সাথে পরিচিত, কারণ মিডিয়াউইকি এবং এর এক্সটেনশনগুলো এই ভাষাতেই লেখা। আপনি যদি আপনার বটের জন্য ওয়েব-ফরম ভিত্তিক কোনো ইন্টারফেস তৈরি করতে চান, তবে পিএইচপি একটি চমৎকার পছন্দ। (অবশ্যই, ফরম ইন্টারফেসযুক্ত যেকোনো বটকে সাধারণ ব্যবহারকারীদের হাত থেকে সুরক্ষিত রাখতে হবে)।
পিএইচপি বট ফাংশনসমূহ সারণিটি প্রধান ফ্রেমওয়ার্কগুলোর ক্ষমতা সম্পর্কে ধারণা দিতে পারে। উইকিপিডিয়া:পিএইচপি বট ফ্রেমওয়ার্ক সারণি
পাইথন বট তৈরির জন্য বর্তমান সময়ের সবথেকে জনপ্রিয় ভাষা।
লাইব্রেরি:
- পাইউইকিবট – সম্ভবত সবথেকে বেশি ব্যবহৃত বট ফ্রেমওয়ার্ক।
- এমডব্লিউ ক্লায়েন্ট – ব্রায়ান দ্বারা পরিচালিত একটি এপিআই-ভিত্তিক ফ্রেমওয়ার্ক।
- এমডব্লিউ পার্সার ফ্রম হেল – একটি উইকিটেক্সট পার্সার।
- পাইমিডিয়াউইকি – পাইথনে তৈরি একটি রিড-অনলি মিডিয়াউইকি এপিআই র্যাপার।
মাইক্রোসফট ডটনেট (.NET)
[সম্পাদনা]মাইক্রোসফট ডটনেট হলো সি শার্প (C#), ভিজ্যুয়াল বেসিক এবং পাওয়ারশেল সহ বেশ কিছু ভাষার সমষ্টি। মোনো প্রজেক্ট ব্যবহার করে এই প্রোগ্রামগুলো লিনাক্স, ইউনিক্স, বিএসডি এবং ম্যাকওএস-এও চালানো সম্ভব।
লাইব্রেরি:
- ডটনেট উইকিবট ফ্রেমওয়ার্ক – ডটনেট-এ তৈরি একটি পূর্ণাঙ্গ এপিআই ক্লায়েন্ট।
- উইকিফাংশনস ডটনেট লাইব্রেরি – এটি এডব্লিউবি-র সাথে যুক্ত একটি লাইব্রেরি।
লাইব্রেরি:
- জাভা উইকি বট ফ্রেমওয়ার্ক – জাভায় তৈরি একটি বট ফ্রেমওয়ার্ক।
- জে-উইকি – জাভায় তৈরি একটি সহজ এবং ব্যবহারযোগ্য বট ফ্রেমওয়ার্ক।
লাইব্রেরি:
- mwn – আধুনিক ইএস-৬ (ES6) ব্যবহার করে লেখা একটি লাইব্রেরি যা বর্তমানে সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হচ্ছে। এটি টাইপস্ক্রিপ্ট সমর্থন করে।
- উইকিএপিআই – জাভাস্ক্রিপ্টের মাধ্যমে মিডিয়াউইকি এপিআই ব্যবহারের একটি সহজ পদ্ধতি।
লাইব্রেরি:
- মিডিয়াউইকি::বাট – রুবিতে লেখা একটি সক্রিয় এপিআই ক্লায়েন্ট।
রাস্ট একটি আধুনিক এবং অত্যন্ত দ্রুতগতির ভাষা যা মেমরি নিরাপত্তার জন্য পরিচিত। উচ্চ পারফরম্যান্স এবং জটিল ডেটা প্রক্রিয়াকরণের প্রয়োজন এমন বটগুলোর জন্য এটি একটি চমৎকার পছন্দ। বর্তমানে ইংরেজি উইকিপিডিয়ার বেশ কিছু প্রভাবশালী বট (যেমন: EnterpriseyBot) এই ভাষা ব্যবহার করছে।
ভিবি স্ক্রিপ্ট
[সম্পাদনা]ভিবি স্ক্রিপ্ট হলো ভিজ্যুয়াল বেসিকের ওপর ভিত্তি করে তৈরি একটি স্ক্রিপ্টিং ভাষা। এর জন্য কোনো সুনির্দিষ্ট ফ্রেমওয়ার্ক নেই, তবে অনেক বট এই ভাষা ব্যবহার করে তৈরি করা হয়েছে।
- ২০১৬ সালের লুয়া বার্ষিক কর্মশালায় উইকিমিডিয়া প্রজেক্টের জন্য লুয়া বট ফ্রেমওয়ার্ক তৈরির কাজ শুরু হয়।
- এমডব্লিউ টেস্ট হলো লুয়া ব্যবহার করে উইকিবট লেখার একটি উদাহরণ।
বটের উৎস কোডের উদাহরণ
[সম্পাদনা]নতুন বট ডেভেলপারদের শেখার সুবিধার্থে নিচে উইকিপিডিয়ার কিছু সুপরিচিত বটের নাম এবং তাদের সোর্স কোডের লিংক দেওয়া হলো:
- KanikBot: এটি মূলত বাংলা উইকিপিডিয়ার বিভিন্ন কারিগরি রক্ষণাবেক্ষণ এবং টেমপ্লেট সংস্কারের কাজ করে।
- EnterpriseyBot: ইংরেজি উইকিপিডিয়ার অত্যন্ত কার্যকর একটি বট যা পাতা স্থানান্তর এবং বিশেষ সম্পাদনার কাজ করে। এটি বিভিন্ন প্রোগ্রামিং ভাষার সমন্বয় তৈরি। যেমন: রাস্ট, পাইথন, রুবি, লুয়া।
এই কোডগুলো পর্যালোচনা করে আপনি বুঝতে পারবেন কীভাবে বটগুলো মিডিয়াউইকির এপিআই ব্যবহার করে জটিল কাজগুলো সম্পন্ন করে।
আপনার ওপেন সোর্স বটটি যুক্ত করুন
[সম্পাদনা]আপনার কি কোনো ওপেন সোর্স বট আছে যা আপনি অন্যদের সাথে শেয়ার করতে চান? নিচের বক্সে আপনার বটের নাম লিখুন এবং "বট যুক্ত করুন" বাটনে ক্লিক করুন।
দ্রষ্টব্য: বাটনটি ক্লিক করলে একটি নতুন পাতা তৈরি হবে যেখানে আপনি আপনার বটের সোর্স কোড এবং কাজের বিবরণ দিতে পারবেন। পরবর্তীতে পর্যালোচনা করে এখানে তা যুক্ত করা হবে