c# - Discord bot 创建和删除临时频道
问题描述
我想创建在用户连接到特定语音频道时创建语音频道的可能性,如果所有者离开,但频道中有另一个用户,我们不删除频道,但如果频道为空,则删除它. 我有以下代码:
private async Task OnUserVoiceStateUpdated(SocketUser socketUser,
SocketVoiceState oldSocketVoiceState,
SocketVoiceState newSocketVoiceState)
{
var createTempChannelId = 778596195836100639ul;
if (socketUser is SocketGuildUser socketGuildUser)
{
var server = socketGuildUser.Guild;
var categoryId = server.CategoryChannels.FirstOrDefault(category => category.Name.Equals("Голосовые каналы"))?.Id;
bool userWannaCreateTempChannel = socketGuildUser.VoiceState?.VoiceChannel.Id == createTempChannelId;
if (userWannaCreateTempChannel)
{
var voiceChannel = await server.CreateVoiceChannelAsync(socketGuildUser.Username, prop => prop.CategoryId = categoryId);
_voiceChannels.TryAdd(socketGuildUser.Username, voiceChannel);
await GetUserVoiceChannelPermissions(voiceChannel, socketGuildUser);
await socketGuildUser.ModifyAsync(x =>
{
x.Channel = Optional.Create(voiceChannel as IVoiceChannel);
});
}
var usersVoiceChannel = (socketGuildUser as IVoiceState).VoiceChannel;
//TODO: fix delete channel when all users leave the channel
if (usersVoiceChannel == null && socketGuildUser.VoiceChannel.Users.Any())
{
await oldSocketVoiceState.VoiceChannel.DeleteAsync();
}
}
}
但问题是当连接了 2 个用户并且其中 1 个离开频道正在删除时,如何解决这个问题?
解决方案
推荐阅读
- javascript - javascript自动时差功能仅适用于动态创建的表行的第一行
- vb.net - 在 VB.net 中使用 webbrowser 从 php id URL 保存图像
- amazon-web-services - 如何为 ELB 实例安装外部 SSL?
- r - 在 R 中使用 Bootstrap 调用不同列以计算相关性和置信区间的函数
- javascript - 从两个数组的内容创建对象
- json - 如何从 Future 形式的 json 对象中获取值
? - linux - 运行 dotnet myapp.dll 时指定端口
- c++ - 以所有可能的方式合并向量
- gmail-api - 尝试使用 Gmail API 创建对线程的草稿回复时,原始电子邮件内容未附加到草稿邮件中
- arrays - 如何在 json 数据中不添加状态字段的情况下获取所有表记录的状态?