-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add member change function impl
- Loading branch information
Showing
13 changed files
with
224 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
using DXKumaBot.Bot.Message; | ||
using Lagrange.Core.Event.EventArg; | ||
|
||
namespace DXKumaBot.Bot.EventArg; | ||
|
||
public class MembersAddedEventArgs : EventArgs | ||
{ | ||
private readonly IBot _bot; | ||
|
||
public MembersAddedEventArgs(IBot bot, GroupMemberIncreaseEvent message) | ||
{ | ||
_bot = bot; | ||
QqMessage = message; | ||
SourceType = MessageSource.Qq; | ||
} | ||
|
||
public MembersAddedEventArgs(IBot bot, TgMessage message) | ||
{ | ||
_bot = bot; | ||
TgMessage = message; | ||
SourceType = MessageSource.Telegram; | ||
} | ||
|
||
public MessageSource SourceType { get; } | ||
public TgMessage? TgMessage { get; } | ||
public GroupMemberIncreaseEvent? QqMessage { get; } | ||
|
||
public string UserName => SourceType switch | ||
{ | ||
MessageSource.Qq => ((QqBot)_bot).GetUserInfo(QqMessage!.MemberUin).Result!.Nickname, | ||
MessageSource.Telegram => throw new NotSupportedException(), | ||
_ => throw new ArgumentOutOfRangeException(nameof(SourceType), SourceType, null) | ||
}; | ||
|
||
public long UserId => SourceType switch | ||
{ | ||
MessageSource.Qq => QqMessage!.GroupUin, | ||
MessageSource.Telegram => throw new NotSupportedException(), | ||
_ => throw new ArgumentOutOfRangeException(nameof(SourceType), SourceType, null) | ||
}; | ||
|
||
public async Task Reply(MessagePair messages) | ||
{ | ||
await _bot.SendMessageAsync(messages, SourceType switch | ||
{ | ||
MessageSource.Qq => QqMessage!.GroupUin, | ||
MessageSource.Telegram => TgMessage!.Chat.Id, | ||
_ => throw new ArgumentOutOfRangeException(nameof(SourceType), SourceType, null) | ||
}, SourceType is MessageSource.Telegram ? TgMessage : default); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
using DXKumaBot.Bot.Message; | ||
using Lagrange.Core.Event.EventArg; | ||
|
||
namespace DXKumaBot.Bot.EventArg; | ||
|
||
public class MembersLeftEventArgs : EventArgs | ||
{ | ||
private readonly IBot _bot; | ||
|
||
public MembersLeftEventArgs(IBot bot, GroupMemberDecreaseEvent message) | ||
{ | ||
_bot = bot; | ||
QqMessage = message; | ||
SourceType = MessageSource.Qq; | ||
} | ||
|
||
public MembersLeftEventArgs(IBot bot, TgMessage message) | ||
{ | ||
_bot = bot; | ||
TgMessage = message; | ||
SourceType = MessageSource.Telegram; | ||
} | ||
|
||
public MessageSource SourceType { get; } | ||
public TgMessage? TgMessage { get; } | ||
public GroupMemberDecreaseEvent? QqMessage { get; } | ||
|
||
public string UserName => SourceType switch | ||
{ | ||
MessageSource.Qq => ((QqBot)_bot).GetUserInfo(QqMessage!.MemberUin).Result!.Nickname, | ||
MessageSource.Telegram => $"{TgMessage!.LeftChatMember!.FirstName}{TgMessage!.LeftChatMember!.LastName}", | ||
_ => throw new ArgumentOutOfRangeException(nameof(SourceType), SourceType, null) | ||
}; | ||
|
||
public string UserId => SourceType switch | ||
{ | ||
MessageSource.Qq => QqMessage!.MemberUin.ToString(), | ||
MessageSource.Telegram => TgMessage!.LeftChatMember!.Username, | ||
_ => throw new ArgumentOutOfRangeException(nameof(SourceType), SourceType, null) | ||
} ?? throw new NullReferenceException(); | ||
|
||
public async Task Reply(MessagePair messages) | ||
{ | ||
await _bot.SendMessageAsync(messages, SourceType switch | ||
{ | ||
MessageSource.Qq => QqMessage!.GroupUin, | ||
MessageSource.Telegram => TgMessage!.Chat.Id, | ||
_ => throw new ArgumentOutOfRangeException(nameof(SourceType), SourceType, null) | ||
}, SourceType is MessageSource.Telegram ? TgMessage : default); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,9 @@ | ||
using DXKumaBot.Bot.Message; | ||
using TgMessage = Telegram.Bot.Types.Message; | ||
|
||
namespace DXKumaBot.Bot; | ||
|
||
public interface IBot | ||
{ | ||
Task SendMessageAsync(MessagePair messages, BotMessage source, bool noReply); | ||
Task SendMessageAsync(MessagePair messages, long id, TgMessage? msg); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,4 @@ | ||
using Lagrange.Core.Message; | ||
using TgMessage = Telegram.Bot.Types.Message; | ||
|
||
namespace DXKumaBot.Bot.Message; | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
namespace DXKumaBot.Functions; | ||
|
||
public interface IFunction | ||
{ | ||
void Register(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
using DXKumaBot.Bot; | ||
using DXKumaBot.Bot.Message; | ||
using Telegram.Bot.Types; | ||
|
||
namespace DXKumaBot.Functions; | ||
|
||
public sealed class MemberChange : IFunction | ||
{ | ||
private const int SpecialGroup = 967611986; | ||
|
||
public void Register() | ||
{ | ||
BotInstance.MembersAdded += async (_, args) => | ||
{ | ||
if (args.SourceType is MessageSource.Qq) | ||
{ | ||
await args.Reply(new(args.QqMessage!.GroupUin is SpecialGroup | ||
? $"恭喜{args.UserName}({args.UserId})发现了迪拉熊宝藏地带,发送dlxhelp试一下吧~" | ||
: $"欢迎{args.UserName}({args.UserId})加入本群,发送dlxhelp和迪拉熊一起玩吧~")); | ||
} | ||
if (args.SourceType is MessageSource.Telegram) | ||
{ | ||
foreach (User user in args.TgMessage!.NewChatMembers!) | ||
{ | ||
await args.Reply(new($"欢迎{user.FirstName}{user.LastName}({user.Username})加入本群,发送dlxhelp和迪拉熊一起玩吧~")); | ||
} | ||
} | ||
}; | ||
BotInstance.MembersLeft += async (_, args) => | ||
{ | ||
await args.Reply(new(args.SourceType is MessageSource.Qq && args.QqMessage!.GroupUin is SpecialGroup | ||
? $"很遗憾,{args.UserName}({args.UserId})离开了迪拉熊的小窝QAQ" | ||
: $"{args.UserName}{(string.IsNullOrEmpty(args.UserId) ? $"({args.UserId})" : string.Empty)}离开了迪拉熊QAQ")); | ||
}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters