2012-04-25 17 views
10

मैं सी # में "स्काइप बॉट" बनाने की कोशिश कर रहा हूं। अब तक मैं इसे एक चैट पर एक में काम करने में सफलतापूर्वक प्राप्त करने में सक्षम हूं। मैं इसे समूह चैट में काम नहीं कर सकता।स्काइप 4COM के साथ स्काइप में समूह चैट में संदेश कैसे भेजूं?

using System; 
using System.Windows.Forms; 
using SKYPE4COMLib; 

namespace SkypeBot 
{ 
    public partial class Form1 : Form 
    { 
     private Skype skype; 
     private const string trigger = "!"; // Say !help 
     private const string nick = "Bot"; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      skype = new Skype(); 
      // Use skype protocol version 7 
      skype.Attach(7, false); 
      // Listen 
      skype.MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(skype_MessageStatus); 
     } 
     private void skype_MessageStatus(ChatMessage msg, TChatMessageStatus status) 
     { 
      if (TChatMessageStatus.cmsRead == status) 
      { 
       return; 
      } 

      if (msg.Body.IndexOf(trigger) == 0 && TChatMessageStatus.cmsReceived == status) 
      { 
       // Remove trigger string and make lower case 
       string command = msg.Body.Remove(0, trigger.Length).ToLower(); 

       // Send processed message back to skype chat window 
       skype.SendMessage(msg.Sender.Handle, nick + " Says: " + ProcessCommand(command)); 
       IChat ichat = skype.get_Chat(msg.Chat.Name); 
       ichat.SendMessage(msg.Sender.Handle, nick + " Says: " + ProcessCommand(command)); 
      } 
     } 

     private string ProcessCommand(string str) 
     { 
      string result; 
      switch (str) 
      { 
       case "help": 
        result = "Sorry no help available"; 
        break; 
       case "date": 
        result = "Current Date is: " + DateTime.Now.ToLongDateString(); 
        break; 
       case "time": 
        result = "Current Time is: " + DateTime.Now.ToLongTimeString(); 
        break; 
       case "who": 
        result = "I am Bot, a magical Skype robot!"; 
        break; 
       case "moon": 
        result = "(moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) (moon) "; 
        break; 
       default: 
        result = "Sorry, I do not recognize your command"; 
        break; 
      } 

      return result; 
     } 
    } 
} 

कहाँ इसे संसाधित संदेश मैं त्रुटि मिलती है भेजता है "नहीं अधिभार विधि 'SendMessage' के लिए 2 तर्क लेता है": यहाँ मेरे स्रोत है।

हालांकि मैं जब का उपयोग करें:

skype.SendMessage(msg.Sender.Handle, nick + " Says: " + 
     ProcessCommand(command)); 

यह पूरी तरह से काम करता है, लेकिन समूह चैट में नहीं। क्या तुम्हारे पास कोई सुझाव है?

उत्तर

22

बजाय

msg.Chat.SendMessage("your message") 

उपयोग करने के लिए प्रयास करें।

सर्वश्रेष्ठ

+0

बहुत अच्छा काम करता है, आपको बहुत धन्यवाद। – user1356292

+5

@ user1356292, क्योंकि वागॉस पोस्ट आपके प्रश्न का उत्तर देता है और यह आपके लिए भी काम करता है। आपको इसे उत्तर के रूप में स्वीकार करना चाहिए था, या कम से कम इसे ऊपर उठाया जाना चाहिए था। कोई अपराध नहीं, सिर्फ एक नैतिक कर्तव्य है। – Saim

संबंधित मुद्दे