我是新来的,所以不要评判我,我想创建一个命令!poke,它发送一个直接的消息(PM)给指定的用户,但我似乎找不到一种方法来提供用户标识给它,并且文档几乎不存在于discord.net中。
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! ");
});
发布于 2017-05-31 23:42:04
有几种方法可以做到这一点,首先是使用命令创建私有通道:
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! ");
});
发布于 2019-06-24 00:24:18
我想我来晚了,但我希望这能帮上忙。这对我的机器人起作用了。
[Command("Test")]
public async Task Test(string message)
{
if (message== "Send me a message")
{
await Context.User.SendMessageAsync("Here is your DM message! ;)");
}else
{
await Context.Channel.SendMessageAsync("I can't send you a message");
}
}
发布于 2018-01-07 02:30:35
或者,
var u = Context.Message.Author; // Or some other means of getting user_id
string msg = "your message";
await Discord.UserExtensions.SendMessageAsync(u, msg);
https://stackoverflow.com/questions/43942006
复制相似问题