Discord.net向指定用户发送直接邮件(PM)
问题描述:
我是新来的所以不要判断我, 我想创建一个命令!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! ");
});
答
有这样做的几种方法,第一种是创建具有命令专用通道:
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! ");
});
答
另外,
var u = Context.Message.Author; // Or some other means of getting user_id
string msg = "your message";
await Discord.UserExtensions.SendMessageAsync(u, msg);