fixs IM messages not being send over to discord for outbound messages

This commit is contained in:
Madpeterz 2021-01-06 01:13:41 +00:00
parent c0d2203099
commit f097705b6a
6 changed files with 56 additions and 18 deletions

View file

@ -17,10 +17,10 @@ namespace BetterSecondBot.DiscordSupervisor
channelname = channelname.ToLowerInvariant();
channelname = String.Concat(channelname.Where(char.IsLetterOrDigit));
ITextChannel Channel = await FindTextChannel(channelname, catmap[catmapid], sender_id, TopicType).ConfigureAwait(false);
ITextChannel Channel = await FindTextChannel(channelname, catmap[catmapid], sender_id, TopicType).ConfigureAwait(true);
if (Channel != null)
{
return await Channel.SendMessageAsync(message);
return await Channel.SendMessageAsync(message).ConfigureAwait(false);
}
}
return null;

View file

@ -12,10 +12,22 @@ namespace BetterSecondBot.DiscordSupervisor
{
controler.Bot.MessageEvent += BotChatControlerHandler;
controler.Bot.StatusMessageEvent += StatusMessageHandler;
controler.Bot.GroupsReadyEvent += GroupsReady;
controler.Bot.GroupsReadyEvent += GroupsReadyHandler;
controler.Bot.SendImEvent += SendImHandler;
}
protected async void GroupsReady(object sender, GroupEventArgs e)
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();
}

View file

@ -184,16 +184,18 @@ namespace BetterSecondBot.DiscordSupervisor
}
else
{
await MarkMessage(message, "⏳").ConfigureAwait(true);
Thread.Sleep(200);
string[] bits = Chan.Topic.Split(':');
if (bits.Length >= 2)
{
if (bits[0] == "IM")
{
if (UUID.TryParse(bits[1], out UUID avatar) == true)
{
IGuildUser user = (IGuildUser)message.Author;
controler.Bot.GetClient.Self.InstantMessage(avatar, message.Content);
await MarkMessage(message, "✅");
{
string content = message.Content;
await message.DeleteAsync().ConfigureAwait(true);
SendIM(avatar, content);
}
}
}

View file

@ -11,14 +11,7 @@ namespace BetterSecondBot.DiscordSupervisor
{
if (HasBot() == true)
{
controler.Bot.SendIM(avatar, message);
if (controler.Bot.AvatarKey2Name.ContainsKey(avatar) == true)
{
if (DiscordClientConnected == true)
{
_ = SendMessageToChannelAsync(controler.Bot.AvatarKey2Name[avatar], "Bot/Script: " + message + "", "im", avatar, "IM").ConfigureAwait(false);
}
}
controler.Bot.SendIM(avatar, message);
}
}
protected async Task DiscordGroupMessage(UUID group_uuid, string sender_name, string message)

View file

@ -77,8 +77,9 @@ namespace BSB.bottypes
}
return commands.ToArray();
}
public virtual void SendIM(UUID avatar,string message)
public override void SendIM(UUID avatar,string message)
{
base.SendIM(avatar, message);
AddToIMchat(avatar, GetClient.Self.Name, message);
Client.Self.InstantMessage(avatar, message);
}

View file

@ -81,6 +81,18 @@ namespace BSB.bottypes
}
}
public class ImSendArgs : EventArgs
{
public UUID avataruuid { get; }
public string message { get; }
public ImSendArgs(UUID avataruuid, string message)
{
this.avataruuid = avataruuid;
this.message = message;
}
}
public class MessageEventArgs : EventArgs
{
public string message { get; }
@ -110,10 +122,13 @@ namespace BSB.bottypes
private EventHandler<MessageEventArgs> _MessageEvent;
private EventHandler<StatusMessageEvent> _StatusMessageEvent;
private EventHandler<GroupEventArgs> _GroupsEvent;
private EventHandler<ImSendArgs> _SendImEvent;
private readonly object _MessageEventLock = new object();
private readonly object _StatusMessageEventlock = new object();
private readonly object _GroupsEventLock = new object();
private readonly object _SendImEventLock = new object();
public event EventHandler<MessageEventArgs> MessageEvent
{
@ -130,8 +145,18 @@ namespace BSB.bottypes
add { lock (_GroupsEventLock) { _GroupsEvent += value; } }
remove { lock (_GroupsEventLock) { _GroupsEvent -= value; } }
}
public event EventHandler<ImSendArgs> SendImEvent
{
add { lock (_SendImEventLock) { _SendImEvent += value; } }
remove { lock (_SendImEventLock) { _SendImEvent -= value; } }
}
protected void On_MessageEvent(MessageEventArgs e)
protected void On_SendImEvent(ImSendArgs e)
{
EventHandler<ImSendArgs> handler = _SendImEvent;
handler?.Invoke(this, e);
}
protected void On_MessageEvent(MessageEventArgs e)
{
EventHandler<MessageEventArgs> handler = _MessageEvent;
handler?.Invoke(this, e);
@ -149,6 +174,11 @@ namespace BSB.bottypes
handler?.Invoke(this, e);
}
public virtual void SendIM(UUID avatar, string message)
{
On_SendImEvent(new ImSendArgs(avatar, message));
}
protected virtual void BotChatControler(string message, string sender_name, UUID sender_uuid, bool avatar, bool group, UUID group_uuid, bool localchat, bool fromme)
{
if (_MessageEvent != null)