![]() |
راه درست كردن اين كار استفاده از <like> هست. من توي ورژن بعدي اين قابليت رو اضافه مي كنم. چون اگر بخوايم در Request "يا" رو اضافه كنيم Query ها بسيار سنگين ميشن چون نياز به استفاده از Wildcard ها هست.
تگ <like> به اين صورت خواهد بود كه مثلاً شما hi رو با جوابش تعيين مي كنيد. بعد ركورد ديگه اي به نام hello كه تعريف مي كنيد Response اون رو به جاي اينكه دوباره با جواب پر كنيد داخل اون مي نويسيد <like>hi</like>. در اين صورت اگر جواب hi رو تغيير بديد جواب hello هم تغيير مي كنه. خوبي ديگرش اين هست كه مي تونيد دو يا چند تا <like> به همراه يك متن اضافه داشته باشيد. مثلا: كد:
Bah bah, <like>hi</like>. <like>khoobi</like> فكر مي كنم اين كار بهتر از اضافه كردن or در بخش Request باشه. براي قوي تر شدن Request يك مدل جديد بعداً ارائه مي كنم كه خيلي انتخاب جواب توسط بات رو هوشمندانه تر خواهد كرد. |
????!؟؟؟؟
1) می خواستم بدونم که یه Table تو دیتابیس ایجاد کرد مثلا Message2 که اینجا 3 پاسخ باشه و به هنگام در خواست از روبات هر سه رو همزمان بفرسته یعنی سه Response باشه Res..1 Res..2 Res..3
حالا این سه جوابو کنار هم در یک پیغام جا بده و رنگ هاشو خودش اوتوماتیک بزاره یعنی نیاز نباشه ما تک تک برای جوابا رنگ تعیین کنیم . ---------------------------------------------------------------------------------------------------- 2) چطوری باید یه دستور نوشت که بجای / مثلا از \ استفاده کرد و اگه بعد از \ هر چیزی بنویسیم بیاد از تو دیتابیس کلمه ای که بعد از \ باشه از تو Table مثلا از تو Message3 بگرده و جوابشو بفرسته؟ یعنی همون کاری که وقتی ما به روبات PM میدیم میاد از تو Message میاد جوابو میفرسته تو اینجا بیاد کلمه ی بعد از \ رو بگیره و جوابشو پیدا کمه؟ نمی خوام \ قبل از Request باشه؟ |
نقل قول:
فکر جالبیه ولی به نظر خیلی سنگین میکنه برنامه رو . اگه هر کلمه رو تشخیص بده و جوابش رو از دیتابیس بگیره و همراه با یه کلمه ی اضافه مثل "و" بچسبونه به هم جالب تر باید باشه . نقل قول:
برای 2 باید توی ماژول modFunctions یه Function مثل getResponse ایجاد کنی بعد توی frmMain یه کدی شبیه این بذاری : نقل قول:
|
ّبا سلام فایل ارور می دهد
با سلام خدمت سیاوش عزیز خوشحالم که این برنامه رو آماده کردین اما من بعد از دانلود و اجرای فایل prjYahoo با ارور زیر مواجه شدم :
Compent "msadodc.ocx" or one of its dependensiec not currectly registered : a file is missing or invalid چجوری این مشکل رو حل کنم با تشکر نقل قول:
|
Manzoramo Nageferti Soroosh-ab
سوروش جان منظور من این نبود که تو گفتی اگه یه بار دیگه بری پست قبلی با دقت بخونی می فهمی
------------------------------------- منظور تو این بود خودم بلد بودم (; اینو تو modFunctions کپی می کنیم Function gettell(Request As String, PersonId As String) As String Set Recordset = Connection.Execute("SELECT Request, Response, Response1, Response2 FROM tell WHERE Request = '" & Request & "'", adCmdText) gettell = getRandom(Recordset!Response) gettell = getRandom(Recordset!Response1) gettell = getRandom(Recordset!Response2) ' Replace custom variables gettell = Replace(gettell, "<$user>", PersonId) gettell = Replace(gettell, "<$lastuser>", lastUser) End Function اینو هم تو Frm کپی می کنیم If Left(Message, 2) = "ok" Then Response = gettell(ok, PersonId) End If -------------------------------------------------------------------------------- منظور من اینا نبود.... حالا یه بار دیگه برو بخونش |
ocx For Ashkan
اینم ocx هایی که ایراد می گیره اشکان
Download |
سیاوش جان ممکنه یه اسکریپت برای تشخیص invisible بذاری که من بتونم واسه روبات استفاده کنم ؟ :(
|
status
سلام سیاوش جان خسته نباشی
میخاستم چند تا نکته رو بگم شاید به بهبودی بات کمک کنه: من واسه اینکه status بات رو یاهو بلوک نکنه مجبور شدم Private Sub tmrStatus_Timer رو از توی سورس بردارم واسه اینکه اگه چند نفر همزمان به بات سلام میکردن بات مجبور بود پشت سر هم status عوض کنه و این باعث میشد یاهو متوجه بشه و status رو واسه آیدی بات قفل کنه. اگه واسه بات تعریف بشه که با فاصله زمانی معین ( حداقل 30 ثانیه ) status رو عوض کنه تو این حالت یاهو بلوک نمیکنه. دوم این که اگه کانکشن اینترنت دیسکانکت شه و دوباره کانکت شه بات واسش تعریف نشده خودشو auto login کنه |
دوستان اینم دو تا سورس
شاید برای تکمیل و بهبودی روبات به کارتون بیاد البته تحت Visual Basic.NET 2005 هست ولی میشه از بعضی جاهاش استفاده کرد مخصوصا از اولی 1- YCC Trainer - 2 Yahoo Login Socket |
نقل قول:
مثلاً بگيد كاربر چه پيغامي بفرسته و بات چه عملي رو انجام بده يا چه اطلاعاتي رو ذخيره كنه. نقل قول:
بابت سورس كد ها هم ممنون براي دوستاني كه مي خواهند با Visual Basic .Net در ياهو! لاگين كنند بيس خوبيه. اما متأسفانه هيچ كدام از پكت ها بجز پكت هاي مرتبط به لاگين رو نداره اما مثال خوبي هست. |
سیاوش جان من از نسخه 1.2.4 استفاده کردم
من از کانکشن برای وصل شدن استفاده میکنم ولی شما احتمالا با کارت شبکه یا مودم adsl ppoe به اینترنت وصل هستید. اینم تصویر بات هنگام دیسی شدن کانکشن http://chatiha.persiangig.ir/Ax/ax.JPG من مجدد کانکت کردم ولی بات تو همین حالت مونده . |
Example For Old Post
سیاوش جان منظورم از اولی این بود که:
من یه پیغامی به بات می فرستم حالا بات بجای اینکه جوابو از قسمتMessage از تو دیتا بیس بیاره بره از قسمت دیگری مانند Message2 بیاره حالا بجای اینکه فقط یه جواب از Message2 به user ارسال بشه 3 جواب از تو Message2 بفرسته که Message2 سه پاسخ داره تو دیتابیس حالا واسه اینکه پیام ارسالی ما به بات با پیام های معمولی مجزا شن بیایم یه / یا \ بهش تعریف کنیم که هر حرفی بعد از /یا\ بیاد بره جوابو از تو Message2 به ما بفرسته؟ نمی خوام مثلا تو Message2 تو قسمت Request /یا\ وجود داشته باشه!؟ --------------------------------------------------------------------------------------------- اگه بازم متوجه نشدی یا نامفهومه بگو یه مثال با Databasi که منظرمو بفهمونه بزارم --------------------------------------------------------------------------------------------- مثال: من به بات میگم salam\ حالا بات بگه Salam Doste Man که کلمات Salam درResponse1 و Doste در Response2و Man در Response3 در دیتا بیس تو قسمت Message2 باشن.!؟ که بات هر سه رو یکجا یا مجزا بفرسته!!! |
سلام سیاوش جان خسته نباشی...
واسه منم آنلاین نمیشه...همچین اروری میده! http://i34.tinypic.com/309nhqt.jpg |
ولی برای من بدون مشکل کار میکنه اینم آیدی : shahrobot
فقط یه سوال فکر کنم یاهو دیگه از <br> برای سطر کردن استفاده نمیکنه چون هرکاری کرم جمله ها پایین همدیگه قرار نگرفتن میتونین بگین از چه کدی استفاده میکنه |
نقل قول:
کمک کنید لطفآ برای تشخیص کلمات یه کاری انجام بدیم :( |
نقل قول:
|
نقل قول:
واسه همین فایل کامپایل شده جدید رو تو پوشه فایل قدیمی انتقال دادم و بات آنلاین شد. اخر سر هم نفهمیدم مشکل از کجاست ولی به هر حال کار کرد. |
نقل قول:
سروش جان منظوور شمارو متوجه نشدم من میخوام کاری کنم که روبات اینطوری pm بده برای منو خودش /gf /bf /pm که همشون پایین همدیگه مشکل من اینه |
نقل قول:
|
نقل قول:
یعنی چه ما ؟ کدوم ما؟ |
داداش منظورم شما بود . خواستم کمکی کرده باشم مگه نه اصلا اینجا جای ایراد املایی گرفتن نیست
|
خیلی ممنون که میخوایین کمک کنید ولی آخه من آخرش نفهمیدم شما چی میگین
|
مگه نگفتم از vbCrLf استفاده کن ؟!
|
سروش جان منظورت از vbCrLf استفاده کن چیه ، میشه یکم بیشتر توضیح بدی ممنون
|
مرســـی بهنام جان که جوابه سوالمو دادی...
اما مشکل دیگه اینه که اینو تو ویندوز اکس پی هم اجرا می کنم.همچین اروری میده. http://i35.tinypic.com/a0f3hy.jpg |
مشکل
سلام آقا یکی بمن بگه تصویر زیر چه پیغامی می ده باید چکارش کنم ممنون
متن پیغام اینه: componet `comctl32.ocx` or one of its dependencies not correctly registered: a file is missing or invalid این توری من فهمیدم یک فایل خرابه فایل را بزارین ممنون می شم http://boxstr.com/files/3870676_j3pmx/dfdf.bmp |
OCX File
دوست عزیز اینم ocx هایی که ایراد می گیره
Download |
من چندتا پیشنهاد همچنین مشکل دارم:
اول پیشنهادها: 1. اضافه کردن /date برای نمایش تاریخ شمسی یا میلادی 2. اضافه کردن /time برای نمایش ساعت ایران 3.اضافه کردن /status با زدن این کامند توسط کاربر آیدی طرف توی استاتوس بار روبات قرار بگیره :d مشکلات: 1. چطوری میشه سطرها رو پایین همدیگه چید: <br> جواب نداد 2. چطوری میشه کاری کرد که روبات به کامندهایی که بهش تعریف کردیم گیر نده و نگه دیگه تکرار نکن مثلا برای /jock که کاربر میخواد به چندتا جوک نگا کنه ولی روبات نمیزاره با تشکر :rolleyes: |
نقل قول:
منم با نظرش موافقم شما این قابلیت ها رو اضافه کن کاری کن با زدن / مختلف به جدول های مختلف دسترسی پیدا کنیم مثلا با زدن jok/ به جدول جوک بره تو دیتابیس بره فکر کنم با یک select ساده بتونیم این کارو کنیم من هم روش کار می کنم امیدوارم بتونم زودتر از تو این سرویسو بزارم (البته با اجازه) مرسی برو بچ نظر بدین تا بات بهتر و کامل تر شه با نظر هم می تونیم خیلی باحالش کنیم ممنون از همه ی شما |
نسخه 1.3.1 روبات ياهو مسنجر!
1(ها)ضميمه
خوب! من يه چند وقتي به خاطر يك كنفرانس اينجا نبودم و همين امروز صبح رسيدم.
پست هاي دوستان رو خوندم، خيلي هاشون جالب و مفيد بودن و سعي كردم در نسخه ي جديد اونايي رو كه پيچيده نيستند اضافه كنم. توي اين نسخه يك تغيير خيلي خيلي اساسي داريم و اون هم الگوپذيري هست كه بايد يك آموزش دربارش بخونيد. البته سيستم قبلي همچنان سر جاش باقي هست. اول ليست امكانات جديد رو مي گم و بعد هم يك آموزش كوتاه درباره ي الگوها. امكانات جديدي كه در حال حاضر يادم مياد:
آموزش و اما آموزش الگو و نحوه ي استفاده از اون: منظور از الگو اين هست كه به جاي اينكه فقط براي يك كلمه ي خاص جواب تعيين كنيم براي يك سري مجموعه عبارت جواب تعيين كنيم! با مثال بهتر متوجه خواهيد شد: داخل بانك اطلاعاتي يك Table هست به نام Patterns كه با Access مي تونيد اطلاعات به اون اضافه كنيد. يك سري الگو بصورت پيشفرض داخل اين Tableقرار داره كه به بررسي اونا مي پردازيم. اوليش *chetori* هست! اين به اين مفهوم هست كه در صورتي كه كلمه ي چطوري توي هر عبارتي باشه به اين الگو تعلق مي گيره. مثلاً در صورتي كه كاربري بگه chetori azizam جواب بات عبارت مقابل اين الگو خواهد بود. حالا در صورتي كه ستاره ي اول وجود نداشت يعني عباراتي كه با chetori شروع مي شن به اين الگو تعلق مي گيرن. پس * به مفهوم ادامه دار بودن از اون طرف يا جاي خالي هست. الگوي بعدي كه بررسي مي خوايم بكنيم اين هست: esmam * hast همونطوري كه گفتم * به مفهوم جاي خالي مي تونه باشه. هر عبارتي كه با esmam شروع بشه و با hast تموم بشه توي اين الگو قرار مي گيره. مثلا esmam siavash hast. اگر به Response اين الگو دقت كنيد يك تگ جديد خواهيد ديد و بك متغير جديد. اول به متغير كه <$star1> هست مي پردازيم. اين مقدار با مقداري كه به جاي ستاره ي اول هست جايگزين مي شه. مثلا در esmam siavash hast به جاي * كلمه ي siavash قرار گرفته پس <$star1> مقدارش siavash خواهد شد. <$star2> مقداري هست كه به جاي ستاره ي دوم قرار مي گيره كه با توجه به اينكه در اين الگو يك ستاره بيشتر نداريم خالي خواهد بود. مثلاً اگر الگوي * yani * رو داشته باشيم و كاربر عبارت cat yani gorbe رو به بات بده <$star1> كلمه ي cat و <$star2> كلمه ي gorbe خواهد بود. خوب حالا بريم سراغ تگ <set>. همونطور كه اينجا مي بينيم در انتهاي response براي esmam * hast عبارت زير رو داريم: كد:
<set>name<to><$star1></set> پس اگر من با آيدي test به بات بگم esmam siavash hast براي مقدار name كاربر test مقدار siavash ذخيره خواهد شد. حالا اگر الگوي بعدي رو ببينيد كه *esmam chie* هست در Responseش عبارت زير رو داريم: كد:
Ta jaii ke yadame esmet <get>name<default>Majhool</get>e! پس بگذاريد يك مكالمه ي تست با بات داشته باشيم: كد:
<bot>: Avval! نكته ي بعدي در الگو ها ستون Priority هست كه داخلش يك سري عدد قرار گرفته! اين اعداد اولويت الگو ها رو مشخص مي كنند. هر چقدر عدد اولويت بالاتر باشه الگو داراي اولويت بالاتري هست. براي مثال الگو هاي بعدي رو بررسي مي كنيم. الگوي *salam* عبارت هاي خيلي زيادي رو مي پوشونه! يعني هر عبارتي كه داخلش سلام باشه جزو اين الگو قرار مي گيره و بات به كاربر سلام مي كنه. اما فرض كنيم كاربر به بات بگه salamat bashi azizam. در اين صورت بات بايد جواب ديگري به كاربر بده چون منظور كاربر سلام كردن نبوده. براي اين كار الگوي ديگري تعيين مي كنيم با مقدار *salamat bashi*. اينجا يك مشكل پيش مياد! هر دو الگو براي عبارت salamat bashi azizam درست هستند. در اين مواقع بات الگويي كه اولويت بالاتري داررو انتخاب مي كنه! مثلا در اينجا چون *salamat bashi* اولويت 80 رو داره و *salam* اولويت 60 براي عبارت salamat bashi azizam جواب الگوي *salamat bashi* انتخاب ميشه كه دقيقاً جوابي هست كه انتظارش رو داريم. نكته ي بعدي اين كه بات هنوز عبارت هاي داخل Message Table رو چك مي كنه و در صورتي كه جواب قطعي در اين Table پيدا نشد به دنبال جواب در بخش Pattern مي گرده! پس در صورتي كه مي خواهيد براي يك عبارت قطعي (بدون *) جوابي تعيين كنيد اين كار رو در Message Table انجام بديد تا سرعت عمليات سريع تر باشه. بخش الگوها كمي پيچيده تر از بقيه ي بخش ها هست اما خيلي به كارايي بات اضافه مي كنه. هر سوالي در باره ي الگو ها داشتيد همينجا بپرسيد. در ورژن بعدي قابليت موضوع گيري رو با بات اضافه خواهم كرد. اين كار رو در اين ورژن نكردم چون اون موضوع هم كمي پيچيده هست و يك دفعه درك هر دو موضوع كمي دشوار مي شد. در حال حاضر يكي از مهمترين كار هايي كه براي اين بات بايد انجام داد ايجاد يك Help كامل جهت استفاده از اين نرم افزار هست. يعني تمام بحث هاي اين تاپيك بصورت يك Help يا Chm File در بياد. اگر دوستان تمايل به كمك كردن در اين بخش رو دارن خوشحال مي شم اعلام كنند. پسورد: كد:
www.artificial.ir |
آمادگی جهت همکاری
همانطور که می دونی سیاوش جان من از اولین کسانی بودم که فعالیتم رو تو این سایت آغاز کردم و قبل از اون هم با هم در ارتباط بودیم اگه یادتون باشه.
من در زمینه Help بات آماده ام |
Message Example
اینم یه مثال واسه آقا سیاوش درباره پست های قبلی
که سوالو بصورت عکس و دیتابیس گفتم البته همون سوال پست قبلیام بود Download For Mr Siavash |
SMClient v1.3.2
SMClient v1.3.2 تنها چیزی که بهش اضافه شده status/ هست کا بازدن status/ آیدی پی ام دهنده تو استاتوس نشون می ده
status/ Download SMClient v1.3.2 |
Ye Moshkel Asasi
سیاوش تو این نسخه جدید مشکلی وجود داره که اگه برطرف کنی عالی میشه
تو نسخه های قبلی با نوشتن کد پایین بات جواب می داد ولی الان جواب نمی ده --------------------------------------------------------------------------------- If Left(Message, 6) = "testpm" Then "Response = "Test Pm Ok End If --------------------------------------------------------------------------------- |
نقل قول:
If Left(Message, 5) = "/ time" Then((Response = "Now Time IS:" & str(Time ( sckYahoo.SendData sendPM(tUser.Text, PersonId, Response) End If |
نقل قول:
نقل قول:
نقل قول:
پس يا بايد شرط رو خارج از اون شرط قرار بديد يا بايد با / شروع كنيد نام سويچ رو، مثلاً /testpm |
مثال برای Sendpm
سیاوش من همین کدsendpm رو تونسخه های قبلی قرار می دادم به راحتی جواب می داد ولی تو این نسخه اینطوری نیست. من یه نمونه از هر دو رو واسه دانلود گذاشتم(هم نسخه قدیم هم جدید) ببینیش حتما مشکل رو می فهمی....؟
در SMClient v1.2.4 کار می کنه ولی در SMClient 1.3.2 کار نمی کنه ؟؟؟؟؟؟؟ Download For Siavash |
اتفاقاً اين به خاطر باگي بود كه در نسخه ي قبل وجود داشت! يعني كار درست در نسخه ي جديد داره انجام ميشه. دليلش هم اين هست كه جواب شما با جواب تهي جايگزين ميشه. براي برطرف كردن اين مشكل از Else بايد استفاده كنيد. يا اينكه اون بخش رو با اين كد تعويض كنيد:
كد:
If Left(Message, 6) = "sendpm" Then در ورژن قبلي وقتي جوابي پيدا نميشد تابع getResponse با ارور از تابع خارج مي شد (كه به خاطر استفاده از On error به تا انتهاي تابع getResponse نمي رفت و مقدار تهي جايگزين جواب نميشد) و در 1.3.1 اين مشكل حل شده. انشاالله در نسخه ي بعدي ساختار بخش GetPM رو كمي تغيير ميدم تا ساده تر بشه به اون امكانات جديد اضافه كرد. |
Ama iN Code Dar Hado Andazeye Gabli Nist
به نظر من سیستم قبلی ارسال پی ام مثلاsendpmدر مثال های قبلی خیلی بهتر از این نمونه جدید هست. اگه بشه در نسخه جدید مانند سری قبلی باشه خیلی عالی تره تا اینی که الان هست-- تغییر در این سیستم موجب میشه که ما کلی از کدارو تغییر بدیم--
|
دوست خوب!
در اون حالت در هر بار سوالي كه كاربر مي پرسيد و در بانك اطلاعاتي وجود نداشت يك Errorداخلي توليد ميشد. اين اصلاً از نظر برنامه نويسي درست نبود. در حال حاضر هم با قرار دادن يك Exit Sub كه در مثال بالا قرار دادم براحتي مي تونيد همين كاري كه مي خواهيد رو انجام بديد. در هر صورت در ورژن بعدي انشاالله يك استاندارد در اين زمينه درست مي كنيم تا دقيقا جاي اضافه كردن كد هاي جانبي مشخص باشه و ديگه تغيير نكنه... در اين ارتباط حق كاملاً با شماست. يك ايده - لطفاً تمام دوستان بخوانند: تصميم دارم در نسخه هاي آينده يك قسمت به كد اضافه كنم تا اطلاعات جديدي كه به هر بات اضافه مي شه در يك پايگاه داده ي مركزي ذخيره بشه! مثلاً وقتي من يك الگوي جديد به بات اضافه مي كنم در يك پايگاه مركزي اون الگوي جديد با نام خود من در اونجا ثبت بشه. همينطور براي تمام دوستاني كه از اين بات استفاده مي كنند. هدف اين هست كه يك بات مركزي با كمك تمام دوستان ساخته بشه كه بتونه به اكثر سوالات جواب بده. اين بانك اطلاعاتي هم در دسترس عموم قرار خواهد گرفت يعني در نهايت به نفع خود دوستان هم خواهد بود. حالا نظرتون در اين ارتباط چي هست؟ آيا روي نوشتن همچين سيستمي كار كنم يا خير؟ |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۰:۲۷ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.