This commit is contained in:
milimoe 2024-03-21 00:01:40 +08:00
parent f683ef1b08
commit 5a4f31550e
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
6 changed files with 156 additions and 38 deletions

View File

@ -275,6 +275,20 @@ namespace Milimoe.RainBOT.Command
}
}
break;
case "osmcoregroup":
if (args.Length > 1 && long.TryParse(args[1].Trim(), out long osmcoregroup_id))
{
string args0 = args[0].ToString().Trim();
if (args0 == "add" || args0 == "remove" || args0 == "+" || args0 == "-")
{
isadd = args0 == "add" || args0 == "+";
if (isadd) GeneralSettings.OSMCoreGroup.Add(osmcoregroup_id);
else GeneralSettings.OSMCoreGroup.Remove(osmcoregroup_id);
msg = AddRemoveAccessGroupMember("OSM核心启用群聊", isadd, osmcoregroup_id);
return msg;
}
}
break;
}
return "OSM Core指令格式不正确或传入的参数不支持。\r\n格式.osm <command> [part] [args...]";
}

View File

@ -1,4 +1,5 @@
using Milimoe.OneBot.Framework;
using System.Reflection;
using Milimoe.OneBot.Framework;
using Milimoe.OneBot.Model.Content;
using Milimoe.OneBot.Model.Event;
using Milimoe.OneBot.Model.Other;
@ -27,14 +28,8 @@ namespace Milimoe.RainBOT.ListeningTask
SetGroupBanContent content_unmute_master = new(e.group_id, GeneralSettings.Master, 0);
SetGroupBanContent content_mute_operator = new(e.group_id, e.operator_id, 60);
await GroupMessageTask.Post(SupportedAPI.set_group_ban, e.group_id, "反制禁言", [content_unmute_master, content_mute_operator]);
if (Bot.GroupMembers.TryGetValue(e.group_id, out List<Member>? list) && list != null)
{
Member? sender = list.Where(m => m.user_id == e.operator_id).FirstOrDefault();
if (sender != null)
{
await e.SendMessage($"检测到主人被{sender.user_id}{(sender.card != "" ? sender.card : sender.nickname)})禁言!");
}
}
Member sender = Bot.GetMember(e.group_id, e.operator_id);
await e.SendMessage($"检测到主人被{sender.user_id}{(sender.card != "" ? sender.card : sender.nickname)})禁言!");
}
else if (e.sub_type == "ban" && e.duration > 0)
{

View File

@ -36,40 +36,49 @@ namespace Milimoe.RainBOT.ListeningTask
Console.ForegroundColor = ConsoleColor.Gray;
}
MuteRecall.Muted[e.group_id].Remove(e.user_id);
if (MuteRecall.Muted.TryGetValue(e.group_id, out Dictionary<long, long>? mute_group) && mute_group != null) mute_group.Remove(e.user_id);
bool onOSMCore = GeneralSettings.OSMCoreGroup.Contains(e.group_id);
// OSM指令
if (e.detail.Length >= 4 && e.detail[..4] == ".osm")
{
if (GeneralSettings.IsRun && e.detail.Contains(".osm info"))
{
// OSM核心状态
string msg = "OSM插件运行状态" + "\r\n本群已启用OSM核心";
if (GeneralSettings.IsRepeat)
string msg = "OSM插件运行状态";
if (onOSMCore)
{
msg += "\r\n随机复读开启";
msg += $"\r\n随机复读概率{GeneralSettings.PRepeat}%" +
$"\r\n随机复读延迟区间{GeneralSettings.RepeatDelay[0]}至{GeneralSettings.RepeatDelay[1]}秒";
msg += "\r\n本群已启用OSM核心";
if (GeneralSettings.IsRepeat)
{
msg += "\r\n随机复读开启";
msg += $"\r\n随机复读概率{GeneralSettings.PRepeat}%" +
$"\r\n随机复读延迟区间{GeneralSettings.RepeatDelay[0]}至{GeneralSettings.RepeatDelay[1]}秒";
}
else msg += "\r\n随机复读关闭";
if (GeneralSettings.IsOSM)
{
msg += "\r\n随机OSM开启";
msg += $"\r\n随机OSM概率{GeneralSettings.POSM}%";
}
else msg += "\r\n随机OSM关闭";
if (GeneralSettings.IsSayNo)
{
msg += "\r\n随机反驳不开启";
msg += $"\r\n随机反驳不概率{GeneralSettings.PSayNo}%";
}
else msg += "\r\n随机反驳不关闭";
if (GeneralSettings.IsMute)
{
msg += "\r\n禁言抽奖开启";
msg += $"\r\n禁言抽奖时长区间{GeneralSettings.MuteTime[0]}至{GeneralSettings.MuteTime[1]}秒";
}
else msg += "\r\n禁言抽奖关闭";
}
else msg += "\r\n随机复读关闭";
if (GeneralSettings.IsOSM)
else
{
msg += "\r\n随机OSM开启";
msg += $"\r\n随机OSM概率{GeneralSettings.POSM}%";
msg += "\r\n本群未启用OSM核心";
}
else msg += "\r\n随机OSM关闭";
if (GeneralSettings.IsSayNo)
{
msg += "\r\n随机反驳不开启";
msg += $"\r\n随机反驳不概率{GeneralSettings.PSayNo}%";
}
else msg += "\r\n随机反驳不关闭";
if (GeneralSettings.IsMute)
{
msg += "\r\n禁言抽奖开启";
msg += $"\r\n禁言抽奖时长区间{GeneralSettings.MuteTime[0]}至{GeneralSettings.MuteTime[1]}秒";
}
else msg += "\r\n禁言抽奖关闭";
_ = Post(e, "OSM状态", msg);
}
else if (GeneralSettings.IsRun && e.detail.Contains(".osm stop"))
@ -226,6 +235,7 @@ namespace Milimoe.RainBOT.ListeningTask
if (int.TryParse(reply.data.id, out int id))
{
TaskUtility.NewTask(async () => await Post(SupportedAPI.delete_msg, e.group_id, "撤回", new DeleteMsgContent(id)));
TaskUtility.NewTask(async () => await Post(SupportedAPI.delete_msg, e.group_id, "撤回", new DeleteMsgContent(e.real_id)));
return;
}
}
@ -366,6 +376,61 @@ namespace Milimoe.RainBOT.ListeningTask
});
return;
}
if (e.detail.Contains("马云", StringComparison.CurrentCultureIgnoreCase))
{
TaskUtility.NewTask(async () =>
{
if (!await CheckBlackList(e)) return;
GroupMessageContent content = new(e.group_id);
content.message.Add(new RecordMessage(Music.MusicList["马云"]));
await Post(e, "Record", content);
});
return;
}
if (e.detail.Contains("电锯", StringComparison.CurrentCultureIgnoreCase))
{
TaskUtility.NewTask(async () =>
{
if (!await CheckBlackList(e)) return;
GroupMessageContent content = new(e.group_id);
content.message.Add(new RecordMessage(Music.MusicList["电锯"]));
await Post(e, "Record", content);
});
return;
}
if (e.detail.Contains("疤王", StringComparison.CurrentCultureIgnoreCase))
{
TaskUtility.NewTask(async () =>
{
if (!await CheckBlackList(e)) return;
GroupMessageContent content = new(e.group_id);
content.message.Add(new RecordMessage(Music.MusicList["疤王"]));
await Post(e, "Record", content);
});
return;
}
if (e.detail.Contains("终极", StringComparison.CurrentCultureIgnoreCase))
{
TaskUtility.NewTask(async () =>
{
if (!await CheckBlackList(e)) return;
GroupMessageContent content = new(e.group_id);
content.message.Add(new RecordMessage(Music.MusicList["终极"]));
await Post(e, "Record", content);
});
return;
}
if (e.detail.Contains("音乐", StringComparison.CurrentCultureIgnoreCase))
{
TaskUtility.NewTask(async () =>
{
if (!await CheckBlackList(e)) return;
GroupMessageContent content = new(e.group_id);
content.message.Add(new RecordMessage(Music.MusicList[Music.MusicList.Keys.ToArray()[new Random().Next(Music.MusicList.Count)]]));
await Post(e, "Record", content);
});
return;
}
// 我的运势
if (e.detail == "我的运势")
@ -452,7 +517,7 @@ namespace Milimoe.RainBOT.ListeningTask
if (Daily.UserDailys.TryGetValue(qq, out string? daily) && daily != null)
{
GroupMessageContent content = new(e.group_id);
content.message.Add(new TextMessage(qq + "的今日运势是:\r\n" + daily));
content.message.Add(new TextMessage(qq + "" + Bot.GetMemberNickName(e.group_id, e.user_id) + "的今日运势是:\r\n" + daily));
await Post(e, "查看运势", content);
}
else
@ -465,6 +530,9 @@ namespace Milimoe.RainBOT.ListeningTask
return;
}
// 下面是开启了OSM Core的群组才能使用的功能
if (!onOSMCore) return;
// 禁言抽奖
if (GeneralSettings.IsMute && e.detail == "禁言抽奖" && !MuteRecall.WillMute.ContainsKey(e.user_id))
{
@ -636,7 +704,7 @@ namespace Milimoe.RainBOT.ListeningTask
else if (e.detail.Contains("可以") && !e.detail.Contains('不') && e.CheckThrow(GeneralSettings.PSayNo, out dice))
{
ColorfulCheckPass(sender, "随机反驳不", dice, GeneralSettings.PSayNo);
if (dice < 20)
if (dice < (GeneralSettings.PSayNo / 2))
{
_ = Post(e, "随机反驳不", "可以");
}
@ -645,10 +713,10 @@ namespace Milimoe.RainBOT.ListeningTask
_ = Post(e, "随机反驳不", "不可以");
}
}
else if (e.detail.Contains('能') && !e.detail.Contains('不') && !e.detail.Contains('可') && e.CheckThrow(GeneralSettings.PSayNo, out dice))
else if (e.detail.Contains('能') && !e.detail.Contains('不') && !e.detail.Contains('技') && !e.detail.Contains('可') && e.CheckThrow(GeneralSettings.PSayNo, out dice))
{
ColorfulCheckPass(sender, "随机反驳不", dice, GeneralSettings.PSayNo);
if (dice < 20)
if (dice < (GeneralSettings.PSayNo / 2))
{
_ = Post(e, "随机反驳不", "能");
}
@ -660,7 +728,7 @@ namespace Milimoe.RainBOT.ListeningTask
else if (e.detail.Contains("可能") && !e.detail.Contains('不') && e.CheckThrow(GeneralSettings.PSayNo, out dice))
{
ColorfulCheckPass(sender, "随机反驳不", dice, GeneralSettings.PSayNo);
if (dice < 20)
if (dice < (GeneralSettings.PSayNo / 2))
{
_ = Post(e, "随机反驳不", "可能");
}

View File

@ -1,4 +1,5 @@
using System.Text.Json;
using System.Reflection;
using System.Text.Json;
using Milimoe.OneBot.Framework;
using Milimoe.OneBot.Framework.Utility;
using Milimoe.OneBot.Model.Content;
@ -55,5 +56,30 @@ namespace Milimoe.RainBOT.Settings
}
}
}
public static Member GetMember(long group_id, long user_id)
{
if (GroupMembers.TryGetValue(group_id, out List<Member>? members) && members != null)
{
Member? member = members.Where(m => m.user_id == user_id).FirstOrDefault();
if (member != null)
{
return member;
}
}
return new();
}
public static string GetMemberNickName(long group_id, long user_id)
{
Member member = GetMember(group_id, user_id);
if (member.user_id != 0) return member.card != "" ? member.card : member.nickname;
return "";
}
public static string GetMemberNickName(Member member)
{
return member.card != "" ? member.card : member.nickname;
}
}
}

View File

@ -48,6 +48,8 @@ namespace Milimoe.RainBOT.Settings
public static List<long> RecallAccessGroup { get; set; } = [];
public static List<long> OSMCoreGroup { get; set; } = [];
public static PluginConfig Configs { get; set; } = new("rainbot", "config");
public static void LoadSetting()
@ -138,6 +140,10 @@ namespace Milimoe.RainBOT.Settings
{
RecallAccessGroup = (List<long>)value;
}
if (configs.TryGetValue("OSMCoreGroup", out value) && value != null)
{
OSMCoreGroup = (List<long>)value;
}
}
public static void SaveConfig()
@ -162,6 +168,7 @@ namespace Milimoe.RainBOT.Settings
Configs.Add("MuteAccessGroup", MuteAccessGroup);
Configs.Add("UnMuteAccessGroup", UnMuteAccessGroup);
Configs.Add("RecallAccessGroup", RecallAccessGroup);
Configs.Add("OSMCoreGroup", OSMCoreGroup);
Configs.Save();
}
}

View File

@ -8,6 +8,10 @@
/// 懂CSGO<para/>
/// 令人沮丧的游戏<para/>
/// man<para/>
/// 马云<para/>
/// 疤王<para/>
/// 电锯/追命<para/>
/// 终极<para/>
/// </summary>
public static Dictionary<string, string> MusicList { get; set; } = [];
@ -17,6 +21,10 @@
MusicList.Add("懂CSGO", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\懂CSGO.mp3");
MusicList.Add("令人沮丧的游戏", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\令人沮丧的游戏.mp3");
MusicList.Add("man", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\man.mp3");
MusicList.Add("马云", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\马云.mp3");
MusicList.Add("疤王", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\疤王.mp3");
MusicList.Add("电锯", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\电锯.mp3");
MusicList.Add("终极", "file:///" + AppDomain.CurrentDomain.BaseDirectory.ToString() + @"music\终极.mp3");
}
}
}