চ্যালেঞ্জ
এই চ্যালেঞ্জের লক্ষ্য হ'ল একটি চ্যাটবট তৈরি করা যা স্ট্যাক এক্সচেঞ্জের চ্যাটরুমগুলিতে চলতে পারে। আপনার বটকে যখন নির্দিষ্ট ব্যবহারকারীর দ্বারা নির্দিষ্ট আদেশগুলি পোস্ট করা হয় এবং এটিতে প্রতিক্রিয়া জানানো হয় তা সনাক্ত করতে সক্ষম হওয়া দরকার। এটি আদেশগুলির তালিকা এবং আপনার বটটি কী করবে:
!!newest
: এই সাইটে পোস্ট করা নতুন প্রশ্নের শিরোনাম (কোনও লিঙ্ক নয়, তবে শিরোনাম) আউটপুট করুন (কোডগলফ.এসই)।!!metanewest
: মেটা সাইটে পোস্ট করা নতুন প্রশ্নের শিরোনাম আউটপুট (meta.codegolf.SE)।!!questioncount
: বর্তমান প্রশ্ন গণনা আউটপুট।!!metaquestioncount
: মেটা সাইটে বর্তমান প্রশ্ন গণনা আউটপুট।!!tag tagname
: প্রথম পরামিতি হিসাবে দেওয়া ট্যাগের ট্যাগ টুকরা (সংক্ষিপ্ত বিবরণ) আউটপুট।!!metatag tagname
: উপরের মত একই, তবে মেটা সাইটের জন্য।!!featured
: বর্তমানে একটি অনুগ্রহ রয়েছে এমন প্রশ্নের গণনা আউটপুট করুন।!!metafeatured
: মেটাতে [বৈশিষ্ট্যযুক্ত] ট্যাগ থাকা প্রশ্নের গণনা আউটপুট করুন ।
বিধি
- আপনার একটি সম্পূর্ণ প্রোগ্রাম লিখতে হবে, একটি স্নিপেট বা ফাংশন নয়।
- যদি এটি প্রয়োজনীয় হয় তবে আপনি ইনপুট হিসাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য অনুরোধ করতে পারেন (ইনপুট, এসটিডিআইএন, কমান্ড-লাইন আর্গুমেন্টের জন্য অনুরোধ করা)। আপনি যদি পাইথন বা রুবি ব্যবহার করেন তবে এটি প্রয়োজনীয় হবে, তবে আপনি জাভাস্ক্রিপ্ট ব্যবহার করেন এবং চ্যাট রুমের পৃষ্ঠাতে স্ক্রিপ্টটি চালনা করলে এটি প্রয়োজনীয় হবে না।
- ওয়েবসকেটের মতো স্টাফ করার জন্য আপনাকে বাহ্যিক গ্রন্থাগারগুলি ব্যবহার করার অনুমতি দেওয়া হয়েছে। এই লাইব্রেরিতে আপনার অক্ষর গণনার জন্য গণনা করতে হবে না।
আপনি একটি বাহ্যিক চ্যাট র্যাপার ব্যবহার করতে পারেন (তবে আপনার নিজের লেখার জন্য উত্সাহ দেওয়া হয় না), এবং তারপরে অক্ষর গণনার জন্য এটি গণনা করতে হবে। আপনাকে মোড়কের কোড পরিবর্তন করার অনুমতি নেই। আপনি যদি এটি ব্যবহার করেন, আপনি এটি পরিবর্তন ছাড়াই ব্যবহার করেন এবং সমস্ত অক্ষর গণনা করতে হবে (এটি আপনার নিজের মোড়ক না লেখার জন্য শাস্তি হিসাবে)।
কেবল র্যাপারের কোডটিই গুনতে হয়। উদাহরণস্বরূপ যদি অন্য ফাইলগুলি থাকে তবে এগুলি গণনা করতে হবে না।
- ইউআরএল সংক্ষিপ্তকারী বা অন্যান্য উপায় যা ইউআরএলগুলি সংক্ষিপ্ত করে তুলতে পারে সেগুলির ব্যবহার নয়: চ্যালেঞ্জ হ'ল চ্যাটবোটটি গল্ফ করা, কোনও ইউআরএল গল্ফ নয়।
- আড্ডার জবাবদিহি করার জন্য এবং আদেশগুলির প্রতিক্রিয়া জানাতে প্রয়োজনীয় তথ্য পাওয়ার জন্য কোনও ওয়েব অনুরোধ নেই।
- ব্যবহারের স্ট্যান্ডার্ড "সমস্যা" অনুমোদিত নয়।
- কেউ পোস্ট কমান্ড, আপনি এই বিন্যাসের একটি চ্যাট বার্তা সঙ্গে সাড়া প্রয়োজন:
@user response
। সুতরাং, আমি যদি আদেশটি লিখি!!featured
এবং এখানে 5 টি বৈশিষ্ট্যযুক্ত প্রশ্ন রয়েছে, আপনার বটটি পোস্ট করা উচিত@ProgramFOX 5
। - আমি যদি আপনার বট পরীক্ষা করি তবে আমি এটি আমার চ্যাটবোট অ্যাকাউন্ট থেকে চালাব এবং এই চ্যাটরুমে এটি চালাব । আমি সর্বদা সেই ঘরে বটগুলি পরীক্ষা করে দেখব, তাই ইনপুট হিসাবে রুম আইডি সরবরাহ করা প্রয়োজন হয় না, এটি সর্বদা 14697 হবে This এই আইডিটি ইনপুট হিসাবে দেওয়া হবে না, এটি হার্ড-কোডেড হওয়া উচিত।
- যদি কমান্ডটি পাওয়া না যায় তবে আউটপুট
@user The command [command] does not exist
।[command]
অ-বিদ্যমান কমান্ডের নাম দ্বারা প্রতিস্থাপন করুন । যদি কমান্ডকে যুক্তি সরবরাহ করা হয়, আর্গুমেন্টগুলি আউটপুট করবেন না, কেবল কমান্ডের নাম। - যদি কোনও কমান্ডের অনেকগুলি আর্গুমেন্ট থাকে তবে প্রয়োজনীয় আর্গুমেন্টগুলি উপেক্ষা করুন।
- যদি কোনও কমান্ডের পর্যাপ্ত আর্গুমেন্ট না থাকে তবে আউটপুট
@user You have not provided enough arguments
- সিস্টেমটি প্রতিরোধ করে যে নকল বার্তা স্বল্প সময়ের মধ্যে পোস্ট করা হয়। সুতরাং, আপনার বট পরীক্ষা করার সময়, আমি কখনই দুটি কমান্ড চালাব না যা একই আউটপুটটিকে ধারাবাহিকভাবে দেয় (যার অর্থ আপনার উদাহরণস্বরূপ একটি বিন্দু যুক্ত করে ম্যাসেজগুলি নকল হলে আলাদা করে তোলে এমন একটি সিস্টেম কার্যকর করতে হবে না)।
- সিস্টেমটি প্রতিরোধ করে যে খুব বেশি বার্তা স্বল্প সময়ের মধ্যে পোস্ট করা যায়, তাই পরীক্ষা করার সময় আমি কখনই স্বল্প সময়ের মধ্যে খুব বেশি কমান্ড প্রেরণ করব না, যার অর্থ আপনার বটকে এটির যত্ন নিতে হবে না (কিছুক্ষণ অপেক্ষা করে) পোস্ট করার আগে, উদাহরণস্বরূপ)।
- এটি কোড-গল্ফ , ন্যূনতম পরিমাণে বাইটস সহ প্রোগ্রাম।
শুরু হচ্ছে
আপনার বট লেখার সাথে শুরু করার জন্য এখানে কিছু তথ্য রয়েছে। আপনার এটি ব্যবহার করতে হবে না, তবে এটি একটি গাইডেন্স হতে পারে।
- লগ ইন করতে, প্রথমে একটি ওপেনআইডি সরবরাহকারীতে লগ ইন করুন। এটি সর্বদা স্ট্যাক এক্সচেঞ্জ ওপেনআইডি (
https://openid.stackexchange.com
) থাকবে। লগইন ফর্মটি অবস্থিতhttps://openid.stackexchange.com/account/login
, এবং সেখানে ব্যবহারকারীর নাম এবং পাসওয়ার্ড সরবরাহ করুন। - তারপরে, লগইন করুন
stackexchange.com
। লগইন ফর্মটি অবস্থিতhttps://stackexchange.com/users/login
। ওপেনআইডি সরবরাহকারী হিসাবে স্ট্যাক এক্সচেঞ্জ চয়ন করুন। - এটি করার পরে, চ্যাটে লগ ইন করুন। এটির জন্য লগইন ফর্মটি অবস্থিত
http://stackexchange.com/users/chat-login
। ওপেনআইডি সরবরাহকারী হিসাবে স্ট্যাক এক্সচেঞ্জ চয়ন করুন। - তারপরে আপনার নিজের হওয়া দরকার
fkey
। তার জন্য, যানhttp://chat.stackexchange.com/chats/join/favorite
এবংfkey
একটি লুকানো ইনপুট ক্ষেত্র থেকে পান। - একটি বার্তা পোস্ট করতে
http://chat.stackexchange.com/chats/14697/messages/new
, একটি অনুরোধ প্রেরণ করুন , এবং দুটি POST পরামিতি সরবরাহ করুন:text
বার্তার পাঠ্যযুক্ত একটিfkey
পরামিতি এবং এতে থাকা একটি প্যারামিটারfkey
। নতুন বার্তাটি কখন পোস্ট করা হয় তা দেখতে আপনি ওয়েবসকেটগুলি ব্যবহার করতে পারেন (তবে এটির সংক্ষিপ্ত হলে অন্য কিছু ব্যবহার করতে দ্বিধা বোধ করবেন না)। দয়া করে এই মেটা স্ট্যাক এক্সচেঞ্জের উত্তরটি দেখুন :
চ্যাট
(wss://chat.sockets.stackexchange.com/events/<roomnumber>/<somehash>?l=<timethingy>)
রুমের আইডি এবং fkey এ পোস্ট করে হ্যাশটি আনা যায়
http://chat.stackexchange.com/ws-auth
টাইমথিংটি হ'ল জেসন দ্বারা ফিরে আসা সময়ের কী
/chats/<roomno>/events
।কোনও বার্তা পোস্ট হওয়ার পরে ইভেন্ট আইডি
1
।- এটা যেমন Doorknob এর মত বিদ্যমান চ্যাট-চাদরে, তাকান দরকারী StackExchange-চ্যাটি এবং Manishearth এর ChatExchange দেখতে কিভাবে এটি ঠিক কাজ করে।
metafeatured
মেটা নিয়ে উদ্বিগ্ন প্রশ্নগুলির অর্থ হবে তবে ... ধন্যবাদ :-)