155 lines
6.2 KiB
C#
155 lines
6.2 KiB
C#
using System.Text.Json;
|
|
using OpenMetaverse;
|
|
using SecondBotEvents.Services;
|
|
|
|
namespace SecondBotEvents.Commands
|
|
{
|
|
[ClassInfo("Text based interaction,message status and history")]
|
|
public class Chat(EventsSecondBot setmaster) : CommandsAPI(setmaster)
|
|
{
|
|
[About("fetchs the last localchat messages")]
|
|
[ReturnHints("json encoded array")]
|
|
[CmdTypeGet()]
|
|
public object LocalChatHistory()
|
|
{
|
|
return BasicReply(JsonSerializer.Serialize(master.DataStoreService.GetLocalChat(), JsonOptions.UnsafeRelaxed));
|
|
}
|
|
|
|
[About("sends a message to localchat (Normal chat)")]
|
|
[ArgHints("channel", "the channel to output on", "Number", "123")]
|
|
[ArgHints("message", "the message to send", "Text", "Hi Mom im on TV")]
|
|
[ReturnHints("array string")]
|
|
[ReturnHintsFailure("Message empty")]
|
|
[CmdTypeDo()]
|
|
public object Say(string channel, string message)
|
|
{
|
|
if (SecondbotHelpers.IsEmpty(message) == true)
|
|
{
|
|
return Failure("Message empty", [channel, message]);
|
|
}
|
|
if(int.TryParse(channel,out int channelnum) == false)
|
|
{
|
|
return Failure("Invaild channel", [channel, message]);
|
|
}
|
|
string typeTag = (channelnum == 0) ? "" : $"[Channel {channelnum}] ";
|
|
GetClient().Self.Chat(message, channelnum, ChatType.Normal);
|
|
return BasicReply("ok");
|
|
}
|
|
|
|
[About("sends a message to localchat (as a Shout)")]
|
|
[ArgHints("channel", "the channel to output on", "Number", "123")]
|
|
[ArgHints("message", "the message to send", "Text", "Hi Mom im on TV")]
|
|
[ReturnHints("array string")]
|
|
[ReturnHintsFailure("Message empty")]
|
|
[CmdTypeDo()]
|
|
public object Shout(string channel, string message)
|
|
{
|
|
if (SecondbotHelpers.IsEmpty(message) == true)
|
|
{
|
|
return Failure("Message empty", [channel, message]);
|
|
}
|
|
if (int.TryParse(channel, out int channelnum) == false)
|
|
{
|
|
return Failure("Invaild channel", [channel, message]);
|
|
}
|
|
GetClient().Self.Chat(message, channelnum, ChatType.Shout);
|
|
return BasicReply("ok");
|
|
}
|
|
|
|
[About("sends a message to localchat (as a Whisper)")]
|
|
[ArgHints("channel", "the channel to output on", "Number", "123")]
|
|
[ArgHints("message", "the message to send", "Text", "Hi Mom im on TV")]
|
|
[ReturnHints("array string")]
|
|
[ReturnHintsFailure("Message empty")]
|
|
[CmdTypeDo()]
|
|
public object Whisper(string channel, string message)
|
|
{
|
|
if (SecondbotHelpers.IsEmpty(message) == true)
|
|
{
|
|
return Failure("Message empty", [channel, message]);
|
|
}
|
|
if (int.TryParse(channel, out int channelnum) == false)
|
|
{
|
|
return Failure("Invaild channel", [channel, message]);
|
|
}
|
|
GetClient().Self.Chat(message, channelnum, ChatType.Whisper);
|
|
return BasicReply("ok");
|
|
}
|
|
|
|
|
|
|
|
[About("sends a im to the selected avatar")]
|
|
[ArgHints("avatar", "Who to send the messsage to", "AVATAR")]
|
|
[ArgHints("message", "the message to send", "Text", "Hi there how are you today?")]
|
|
[ReturnHints("ok")]
|
|
[ReturnHintsFailure("Message empty")]
|
|
[ReturnHintsFailure("avatar lookup")]
|
|
[CmdTypeDo()]
|
|
public object IM(string avatar, string message)
|
|
{
|
|
ProcessAvatar(avatar);
|
|
if(avataruuid == UUID.Zero)
|
|
{
|
|
return Failure("avatar lookup", [avatar, message]);
|
|
}
|
|
if (SecondbotHelpers.IsEmpty(message) == true)
|
|
{
|
|
return Failure("Message empty", [avatar, message]);
|
|
}
|
|
master.DataStoreService.OpenChatWindow(false, avataruuid, avataruuid);
|
|
master.BotClient.SendIM(avataruuid, message);
|
|
string senderName = "{BOT} " + GetClient().Self.Name;
|
|
master.DataStoreService.RecordAvatarIm(avataruuid, senderName, message);
|
|
if (master.DiscordService != null && master.DiscordService.isRunning())
|
|
{
|
|
string avName = master.DataStoreService.GetAvatarName(avataruuid);
|
|
if (string.IsNullOrEmpty(avName) || avName == "lookup")
|
|
{
|
|
avName = avatar;
|
|
}
|
|
master.DiscordService.AvatarIMChat(avataruuid, avName, message, GetClient().Self.Name);
|
|
}
|
|
return BasicReply("ok", [avatar, message]);
|
|
}
|
|
|
|
[About("gets a full list of all avatar chat windows")]
|
|
[ReturnHints("array UUID = Name")]
|
|
[CmdTypeGet()]
|
|
public object chatwindows()
|
|
{
|
|
return BasicReply(JsonSerializer.Serialize(master.DataStoreService.GetAvatarImWindows(), JsonOptions.UnsafeRelaxed));
|
|
}
|
|
|
|
[About("gets a list of chat windows from avatars with unread messages")]
|
|
[ReturnHints("array of UUID")]
|
|
[CmdTypeGet()]
|
|
public object listwithunread()
|
|
{
|
|
return BasicReply(JsonSerializer.Serialize(master.DataStoreService.GetAvatarImWindowsUnread(), JsonOptions.UnsafeRelaxed));
|
|
}
|
|
|
|
[About("gets if there are any unread im messages from avatars at all")]
|
|
[ReturnHints("True|False")]
|
|
[CmdTypeGet()]
|
|
public object haveunreadims()
|
|
{
|
|
return BasicReply(master.DataStoreService.GetAvatarImWindowsUnreadAny().ToString());
|
|
}
|
|
|
|
[About("gets the chat from the selected window for avatar")]
|
|
[ArgHints("window", "avatar UUID you wish to view the chat from", "UUID")]
|
|
[ReturnHintsFailure("avatar UUID invaild")]
|
|
[ReturnHints("Array of text")]
|
|
[CmdTypeGet()]
|
|
public object getimchat(string avatarid)
|
|
{
|
|
UUID avatarUUID = UUID.Zero;
|
|
if (UUID.TryParse(avatarid, out avatarUUID) == false)
|
|
{
|
|
return Failure("avatar UUID invaild");
|
|
}
|
|
return BasicReply(JsonSerializer.Serialize(master.DataStoreService.GetAvatarImWindow(avatarUUID), JsonOptions.UnsafeRelaxed));
|
|
}
|
|
|
|
}
|
|
}
|