How do I send a message in a group chat in Skype with Skype4COM?

bots, c#, skype, skype4com

Solution

Try to use

msg.Chat.SendMessage("your message")

instead.

Best

Problem

I've been trying to make a "Skype Bot" in C#. So far I've successfully been able to get it to work in one on one chats. I can't get it to work in group chats. Here's my source: ``` 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; } } } ``` Where it sends the processed message I get the error "No overload for method 'SendMessage' takes 2 arguments". However when I use: ``` skype.SendMessage(msg.Sender.Handle, nick + " Says: " + ProcessCommand(command)); ``` It works perfectly, but not in group chats. Do you have any suggestions?

Original source