SecondBot/CLI/DiscordSupervisor/DiscordEvents.cs

67 lines
2.4 KiB
C#

using BSB.bottypes;
using System;
using System.Collections.Generic;
using System.Text;
namespace BetterSecondBot.DiscordSupervisor
{
public class DiscordEvents : DiscordBot
{
protected StatusMessageEvent LastNetworkEventArgs = null;
protected void attach_events()
{
controler.Bot.MessageEvent += BotChatControlerHandler;
controler.Bot.StatusMessageEvent += StatusMessageHandler;
controler.Bot.GroupsReadyEvent += GroupsReadyHandler;
controler.Bot.SendImEvent += SendImHandler;
}
protected void SendImHandler(object sender, ImSendArgs e)
{
if (controler.Bot.AvatarKey2Name.ContainsKey(e.avataruuid) == true)
{
if (DiscordClientConnected == true)
{
_ = SendMessageToChannelAsync(controler.Bot.AvatarKey2Name[e.avataruuid], "Bot/Script: " + e.message + "", "im", e.avataruuid, "IM").ConfigureAwait(false);
}
}
}
protected async void GroupsReadyHandler(object sender, GroupEventArgs e)
{
await DiscordRebuildChannels();
}
protected void BotChatControlerHandler(object sender, MessageEventArgs e)
{
BotChatControler(e.message, e.sender_name, e.sender_uuid, e.avatar, e.group, e.group_uuid, e.localchat, e.fromme);
}
protected async void StatusMessageHandler(object sender, StatusMessageEvent e)
{
bool apply_update = true;
if(LastNetworkEventArgs != null)
{
if((LastNetworkEventArgs.sim == e.sim) && (LastNetworkEventArgs.connected == e.connected))
{
apply_update = false;
}
}
if (apply_update == true)
{
LastNetworkEventArgs = e;
if (e.connected == true)
{
await DiscordClient.SetGameAsync("Sim:" + e.sim);
await DiscordClient.SetStatusAsync(Discord.UserStatus.Online);
}
else
{
await DiscordClient.SetGameAsync("Logged out");
await DiscordClient.SetStatusAsync(Discord.UserStatus.Idle);
}
}
}
}
}