Tôi đã cố gắng tạo một "Bot Skype" trong C#. Cho đến nay tôi đã thành công để có thể làm cho nó hoạt động trong một cuộc trò chuyện. Tôi không thể làm cho nó hoạt động trong các cuộc trò chuyện nhóm. Đây là nguồn của tôi:Làm cách nào để gửi tin nhắn trong cuộc trò chuyện nhóm trong Skype với Skype4COM?
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;
}
}
}
đâu nó sẽ gửi thông điệp xử lý tôi nhận được lỗi "Không quá tải cho phương pháp 'SendMessage' mất 2 đối số".
Tuy nhiên khi tôi sử dụng:
skype.SendMessage(msg.Sender.Handle, nick + " Says: " +
ProcessCommand(command));
Nó hoạt động hoàn hảo, nhưng không phải trong cùng nhóm chat. Bạn có đề nghị nào không?
Hoạt động tuyệt vời, cảm ơn bạn rất nhiều. – user1356292
@ user1356292, vì bài đăng Vagaus trả lời câu hỏi của bạn và nó cũng phù hợp với bạn. Bạn nên chấp nhận nó như là câu trả lời, hoặc upvoted nó ít nhất. Không có hành vi phạm tội, chỉ là một nhiệm vụ đạo đức. – Saim