Skip to content

Commit

Permalink
Kick guild members
Browse files Browse the repository at this point in the history
  • Loading branch information
gehongyan committed Nov 9, 2024
1 parent 76c03c3 commit f38982a
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/QQBot.Net.Core/Entities/Users/IGuildMember.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,21 @@ public interface IGuildMember : IGuildUser
/// 获取此用户加入该子频道的时间。
/// </summary>
DateTimeOffset? JoinedAt { get; }

/// <summary>
/// 将此用户从此子频道中踢出。
/// </summary>
/// <param name="addBlacklist"> 是否在踢出成员的同时将其加入黑名单。 </param>
/// <param name="pruneDays">
/// 撤回指定时间范围内的消息,支持的值有:
/// <list type="table">
/// <listheader> <term> 值 </term> <description> 释义 </description> </listheader>
/// <item> <term> <c>0</c> </term> <description> 不撤回任何消息。 </description> </item>
/// <item> <term> <c>3</c>、<c>7</c>、<c>15</c>、<c>30</c> </term> <description> 撤回指定天数之前至当前的所有消息。 </description> </item>
/// <item> <term> <c>-1</c> </term> <description> 撤回全部消息。 </description> </item>
/// </list>
/// </param>
/// <param name="options"> 发送请求时要使用的选项。 </param>
/// <returns> 一个表示异步踢出操作的任务。 </returns>
Task KickAsync(bool addBlacklist = false, int pruneDays = 0, RequestOptions? options = null);
}
4 changes: 4 additions & 0 deletions src/QQBot.Net.Rest/Entities/Users/RestGuildMember.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,8 @@ internal void Update(User userModel, Member? memberModel)
RoleIds = memberModel?.Roles;
JoinedAt = memberModel?.JoinedAt;
}

/// <inheritdoc />
public Task KickAsync(bool addBlacklist = false, int pruneDays = 0, RequestOptions? options = null) =>
UserHelper.KickAsync(this, Client, addBlacklist, pruneDays, options);
}
17 changes: 17 additions & 0 deletions src/QQBot.Net.Rest/Entities/Users/UserHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using QQBot.API.Rest;

namespace QQBot.Rest;

internal static class UserHelper
{
public static async Task KickAsync(IGuildMember member, BaseQQBotClient client,
bool addBlacklist, int pruneDays, RequestOptions? options)
{
DeleteGuildMemberParams args = new()
{
AddBlacklist = addBlacklist,
DeleteHistoryMessageDays = pruneDays
};
await client.ApiClient.DeleteGuildMemberAsync(member.GuildId, member.Id, args, options).ConfigureAwait(false);
}
}
5 changes: 5 additions & 0 deletions src/QQBot.Net.WebSocket/Entities/Users/SocketGuildMember.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Diagnostics;
using QQBot.Rest;

namespace QQBot.WebSocket;

Expand Down Expand Up @@ -46,6 +47,10 @@ internal void Update(ClientState state, API.User userModel, API.Member? model)
JoinedAt = model?.JoinedAt;
}

/// <inheritdoc />
public Task KickAsync(bool addBlacklist = false, int pruneDays = 0, RequestOptions? options = null) =>
UserHelper.KickAsync(this, Client, addBlacklist, pruneDays, options);

private string DebuggerDisplay =>
$"{Nickname ?? Username} ({Id}{(IsBot ?? false ? ", Bot" : "")}, Guild Member)";
}

0 comments on commit f38982a

Please sign in to comment.