fixs IM messages not being send over to discord for outbound messages
This commit is contained in:
parent
c0d2203099
commit
f097705b6a
6 changed files with 56 additions and 18 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue