2017-05-12 19 views
0

我是新來的所以不要判斷我, 我想創建一個命令!poke向指定用戶發送直接郵件(PM),但是我似乎無法找到一種將用戶ID提供給它的方法,並且文檔幾乎不存在於discord.net中。Discord.net向指定用戶發送直接郵件(PM)

 commands.CreateCommand("poke") 
      .Parameter("target") 
      .Do(async (e) => 
      { 
       ulong userID = e.User.Id; 
       Console.WriteLine("[" + e.Server.Name + "]" + e.User.Name + " just poked " + e.GetArg("target")); 
       await e.User.SendMessage("HEY, wake up! "); 
      }); 

回答

2

有這樣做的幾種方法,第一種是創建具有命令專用通道:

   var c = discord.CreatePrivateChannel(ulong userid); 

,並從它像這樣發送消息:

   await c.SendMessage("blabla"); 

和另一種方式是存儲用戶作爲對象,然後從中發送消息。

   User u = null; 
       string findUser = e.GetArg("target"); 

         u = e.Message.MentionedUsers.FirstOrDefault(); //checking mentioned users 
         u = e.Server.FindUsers(findUser).FirstOrDefault(); //looking for specified user in server 

       await u.SendMessage("HEY, wake up! "); 

我的命令如下:

 commands.CreateCommand("poke") 
      .Parameter("target", ParameterType.Required) 
      .Do(async (e) => 
      { 
       ulong id; 
       User u = null; 
       string findUser = e.Args[0]; 

       if (!string.IsNullOrWhiteSpace(findUser)) 
       { 
        if (e.Message.MentionedUsers.Count() == 1) 
         u = e.Message.MentionedUsers.FirstOrDefault(); 
        else if (e.Server.FindUsers(findUser).Any()) 
         u = e.Server.FindUsers(findUser).FirstOrDefault(); 
        else if (ulong.TryParse(findUser, out id)) 
         u = e.Server.GetUser(id); 
       } 
       Console.WriteLine("[" + e.Server.Name + "]" + e.User.Name + " just poked " + u); 
       await u.SendMessage("HEY, wake up! "); 
      }); 
0

另外,

var u = Context.Message.Author; // Or some other means of getting user_id 
string msg = "your message"; 
await Discord.UserExtensions.SendMessageAsync(u, msg); 
相關問題