Localchat history (Required for webUI)
This commit is contained in:
parent
0958430471
commit
375a85667b
6 changed files with 166 additions and 18 deletions
19
Core/Commands/Chat/LocalChatHistory.cs
Normal file
19
Core/Commands/Chat/LocalChatHistory.cs
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System.Linq;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace BSB.Commands.Chat
|
||||||
|
{
|
||||||
|
class LocalChatHistory : CoreCommand_SmartReply_1arg
|
||||||
|
{
|
||||||
|
public override string Helpfile { get { return "Gets the last 20 localchat messages the bot has."; } }
|
||||||
|
public override bool CallFunction(string[] args)
|
||||||
|
{
|
||||||
|
if(base.CallFunction(args) == true)
|
||||||
|
{
|
||||||
|
return bot.GetCommandsInterface.SmartCommandReply(true, args[0], JsonConvert.SerializeObject(bot.getLocalChatHistory()), CommandName);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -31,6 +31,10 @@ namespace BSB.Commands.Chat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (channel == 0)
|
||||||
|
{
|
||||||
|
bot.AddToLocalChat(bot.GetClient.Self.Name, message);
|
||||||
|
}
|
||||||
bot.GetClient.Self.Chat(message, channel, ChatLevel);
|
bot.GetClient.Self.Chat(message, channel, ChatLevel);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,7 @@ namespace BSB.bottypes
|
||||||
}
|
}
|
||||||
public virtual void SendIM(UUID avatar,string message)
|
public virtual void SendIM(UUID avatar,string message)
|
||||||
{
|
{
|
||||||
|
AddToIMchat(avatar, GetClient.Self.Name, message);
|
||||||
Client.Self.InstantMessage(avatar, message);
|
Client.Self.InstantMessage(avatar, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,13 @@ namespace BSB.bottypes
|
||||||
{
|
{
|
||||||
av = true;
|
av = true;
|
||||||
}
|
}
|
||||||
|
if (e.Message != "")
|
||||||
|
{
|
||||||
BotChatControler(e.Message, e.FromName, e.SourceID, av, false, UUID.Zero, true, fromme);
|
BotChatControler(e.Message, e.FromName, e.SourceID, av, false, UUID.Zero, true, fromme);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
protected virtual void BotChatControler(string message, string sender_name, UUID sender_uuid)
|
protected virtual void BotChatControler(string message, string sender_name, UUID sender_uuid)
|
||||||
{
|
{
|
||||||
BotChatControler(message, sender_name, sender_uuid, false, false, UUID.Zero, false, false);
|
BotChatControler(message, sender_name, sender_uuid, false, false, UUID.Zero, false, false);
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,42 @@ namespace BSB.bottypes
|
||||||
{
|
{
|
||||||
public abstract class VirtualsBot : BasicBot
|
public abstract class VirtualsBot : BasicBot
|
||||||
{
|
{
|
||||||
|
public virtual Dictionary<UUID, string> GetIMChatWindowKeyNames()
|
||||||
|
{
|
||||||
|
return new Dictionary<UUID, string>();
|
||||||
|
}
|
||||||
|
public virtual void AddToLocalChat(string name, string message)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
#region IMchat
|
||||||
|
public virtual List<UUID> IMChatWindows()
|
||||||
|
{
|
||||||
|
return new List<UUID>();
|
||||||
|
}
|
||||||
|
public virtual bool ImChatWindowHasUnread(UUID chat_window)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public virtual List<string> GetIMChatWindow(UUID chat_window)
|
||||||
|
{
|
||||||
|
return new List<string>();
|
||||||
|
}
|
||||||
|
public virtual void AddToIMchat(UUID avatar, string name, string message)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region group
|
#region group
|
||||||
protected List<UUID> active_group_chat_sessions = new List<UUID>();
|
protected List<UUID> active_group_chat_sessions = new List<UUID>();
|
||||||
public virtual List<UUID> GetActiveGroupchatSessions { get { return new List<UUID>(); } }
|
public virtual List<UUID> GetActiveGroupchatSessions { get { return new List<UUID>(); } }
|
||||||
#endregion
|
#endregion
|
||||||
|
public virtual List<string> getLocalChatHistory()
|
||||||
|
{
|
||||||
|
return new List<string>() { };
|
||||||
|
}
|
||||||
#region GroupIMs
|
#region GroupIMs
|
||||||
public virtual bool HasUnreadGroupchats()
|
public virtual bool HasUnreadGroupchats()
|
||||||
{
|
{
|
||||||
|
|
@ -22,11 +54,11 @@ namespace BSB.bottypes
|
||||||
{
|
{
|
||||||
return new UUID[] { };
|
return new UUID[] { };
|
||||||
}
|
}
|
||||||
public virtual string[] GetGroupchat(UUID group)
|
public virtual List<string> GetGroupchat(UUID group)
|
||||||
{
|
{
|
||||||
return new string[] { };
|
return new List<string>();
|
||||||
}
|
}
|
||||||
protected virtual void AddToGroupchat(UUID group, string name, string message)
|
public virtual void AddToGroupchat(UUID group, string name, string message)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,117 @@
|
||||||
using OpenMetaverse;
|
using Newtonsoft.Json;
|
||||||
|
using OpenMetaverse;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace BSB.bottypes
|
namespace BSB.bottypes
|
||||||
{
|
{
|
||||||
public abstract class ChatRelay : RLVbot
|
public abstract class ChatRelay : RLVbot
|
||||||
{
|
{
|
||||||
#region GroupIMs
|
#region GroupIMs
|
||||||
|
protected int localchatlimit = 20;
|
||||||
protected int groupchatlimit = 10;
|
protected int groupchatlimit = 10;
|
||||||
|
protected int imchatlimit = 20;
|
||||||
protected Dictionary<UUID, List<string>> group_chat_history = new Dictionary<UUID, List<string>>();
|
protected Dictionary<UUID, List<string>> group_chat_history = new Dictionary<UUID, List<string>>();
|
||||||
protected Dictionary<UUID, bool> group_chat_unread = new Dictionary<UUID, bool>();
|
protected Dictionary<UUID, bool> group_chat_unread = new Dictionary<UUID, bool>();
|
||||||
protected bool unread_groupchats;
|
|
||||||
public override bool HasUnreadGroupchats()
|
protected Dictionary<UUID, List<string>> im_chat_history = new Dictionary<UUID, List<string>>();
|
||||||
|
protected Dictionary<UUID, bool> im_chat_unread = new Dictionary<UUID, bool>();
|
||||||
|
protected Dictionary<UUID, string> im_chat_history_to_name = new Dictionary<UUID, string>();
|
||||||
|
|
||||||
|
public override Dictionary<UUID, string> GetIMChatWindowKeyNames()
|
||||||
{
|
{
|
||||||
return unread_groupchats;
|
return im_chat_history_to_name;
|
||||||
}
|
}
|
||||||
protected void CheckUnreadGroupchat()
|
|
||||||
|
public override List<UUID> IMChatWindows()
|
||||||
{
|
{
|
||||||
unread_groupchats = group_chat_unread.ContainsValue(true);
|
return im_chat_history.Keys.ToList();
|
||||||
}
|
}
|
||||||
|
public override bool ImChatWindowHasUnread(UUID chat_window)
|
||||||
|
{
|
||||||
|
if(im_chat_unread.ContainsKey(chat_window) == true)
|
||||||
|
{
|
||||||
|
return im_chat_unread[chat_window];
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public override List<string> GetIMChatWindow(UUID chat_window)
|
||||||
|
{
|
||||||
|
if(im_chat_history.ContainsKey(chat_window) == true)
|
||||||
|
{
|
||||||
|
im_chat_unread[chat_window] = false;
|
||||||
|
return im_chat_history[chat_window];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new List<string>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void AddToIMchat(UUID avatar, string name, string message)
|
||||||
|
{
|
||||||
|
if (im_chat_history.ContainsKey(avatar) == false)
|
||||||
|
{
|
||||||
|
im_chat_history.Add(avatar, new List<string>());
|
||||||
|
im_chat_unread.Add(avatar, false);
|
||||||
|
}
|
||||||
|
var date = DateTime.Now;
|
||||||
|
im_chat_history[avatar].Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + name + ":" + message + "");
|
||||||
|
if (im_chat_history[avatar].Count > imchatlimit)
|
||||||
|
{
|
||||||
|
im_chat_history[avatar].RemoveAt(0);
|
||||||
|
}
|
||||||
|
if (name != GetClient.Self.Name)
|
||||||
|
{
|
||||||
|
im_chat_unread[avatar] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void AddToLocalChat(string name, string message)
|
||||||
|
{
|
||||||
|
var date = DateTime.Now;
|
||||||
|
LocalChat_history.Add("[" + date.Hour.ToString() + ":" + date.Minute.ToString() + "] " + name + ":" + message + "");
|
||||||
|
if (LocalChat_history.Count > localchatlimit)
|
||||||
|
{
|
||||||
|
LocalChat_history.RemoveAt(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected List<string> LocalChat_history = new List<string>();
|
||||||
|
public override List<string> getLocalChatHistory()
|
||||||
|
{
|
||||||
|
return LocalChat_history;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void BotChatControler(string message, string sender_name, UUID sender_uuid, bool avatar, bool group, UUID group_uuid, bool localchat, bool fromme)
|
||||||
|
{
|
||||||
|
base.BotChatControler(message, sender_name, sender_uuid, avatar, group, group_uuid, localchat, fromme);
|
||||||
|
if(localchat == true)
|
||||||
|
{
|
||||||
|
if (avatar == true)
|
||||||
|
{
|
||||||
|
if (fromme == false)
|
||||||
|
{
|
||||||
|
AddToLocalChat(sender_name, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (avatar == true)
|
||||||
|
{
|
||||||
|
if(group == false)
|
||||||
|
{
|
||||||
|
if (fromme == false)
|
||||||
|
{
|
||||||
|
AddToIMchat(sender_uuid, sender_name, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override bool GroupHasUnread(UUID group)
|
public override bool GroupHasUnread(UUID group)
|
||||||
{
|
{
|
||||||
if (group_chat_unread.ContainsKey(group) == true)
|
if (group_chat_unread.ContainsKey(group) == true)
|
||||||
|
|
@ -39,17 +132,16 @@ namespace BSB.bottypes
|
||||||
}
|
}
|
||||||
return reply.ToArray();
|
return reply.ToArray();
|
||||||
}
|
}
|
||||||
public override string[] GetGroupchat(UUID group)
|
public override List<string> GetGroupchat(UUID group)
|
||||||
{
|
{
|
||||||
if (group_chat_history.ContainsKey(group) == true)
|
if (group_chat_history.ContainsKey(group) == true)
|
||||||
{
|
{
|
||||||
group_chat_unread[group] = false;
|
group_chat_unread[group] = false;
|
||||||
CheckUnreadGroupchat();
|
return group_chat_history[group];
|
||||||
return group_chat_history[group].ToArray();
|
|
||||||
}
|
}
|
||||||
return new string[] { };
|
return new List<string>();
|
||||||
}
|
}
|
||||||
protected override void AddToGroupchat(UUID group,string name,string message)
|
public override void AddToGroupchat(UUID group,string name,string message)
|
||||||
{
|
{
|
||||||
if (group_chat_history.ContainsKey(group) == false)
|
if (group_chat_history.ContainsKey(group) == false)
|
||||||
{
|
{
|
||||||
|
|
@ -64,7 +156,6 @@ namespace BSB.bottypes
|
||||||
}
|
}
|
||||||
if (name != GetClient.Self.Name)
|
if (name != GetClient.Self.Name)
|
||||||
{
|
{
|
||||||
unread_groupchats = true;
|
|
||||||
group_chat_unread[group] = true;
|
group_chat_unread[group] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -74,14 +165,12 @@ namespace BSB.bottypes
|
||||||
{
|
{
|
||||||
group_chat_history.Remove(group);
|
group_chat_history.Remove(group);
|
||||||
group_chat_unread.Remove(group);
|
group_chat_unread.Remove(group);
|
||||||
CheckUnreadGroupchat();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override void ClearAllGroupchat()
|
public override void ClearAllGroupchat()
|
||||||
{
|
{
|
||||||
group_chat_history = new Dictionary<UUID, List<string>>();
|
group_chat_history = new Dictionary<UUID, List<string>>();
|
||||||
group_chat_unread = new Dictionary<UUID, bool>();
|
group_chat_unread = new Dictionary<UUID, bool>();
|
||||||
unread_groupchats = false;
|
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue