gpt4 book ai didi

c# - Discord.net 向指定用户发送直接消息(PM)

转载 作者:太空宇宙 更新时间:2023-11-03 21:02:32 24 4
gpt4 key购买 nike

我是新来的,所以不要评判我,我想创建一个命令 !poke,它向指定用户发送直接消息 (PM),但我似乎无法找到向其提供用户 ID 的方法,而且 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! ");
});

最佳答案

有几种方法可以做到这一点,首先是使用命令创建私有(private) channel :

                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! ");
});

关于c# - Discord.net 向指定用户发送直接消息(PM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43942006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com