Open madslyng opened 8 years ago
I implemented this exact functionality myself, and it's very possible. Here's a snapshot from the constructor of a custom responder that only responds to messages from me. When the bot is fully online, it sends me a DM :
public MasterResponder(string masterName, Bot botRef)
{
_masterName = masterName;
TimerHelper.SetTimeout(async () =>
{
while (botRef.ConnectedHubs == null) ;
await botRef.Say(new BotMessage()
{
Text = "hello master.",
ChatHub = botRef.ConnectedDMs.Where(x => x.Name == "@" + _masterName).Single()
});
}, 5000);
}
where TimerHelper is a little utility class that mimic's javascript's setTimeout():
public static class TimerHelper
{
public static IDisposable SetTimeout(Action method, int delayInMilliseconds)
{
System.Timers.Timer timer = new System.Timers.Timer(delayInMilliseconds);
timer.Elapsed += (source, e) =>
{
method();
};
timer.AutoReset = false;
timer.Enabled = true;
timer.Start();
return timer as IDisposable;
}
}
I see, so you use this inside a normal responder, correct ?
Yes, correct. I just passed the Bot reference to the constructor (in this case). You could broadcast a message from a background thread from any responder, provided you have a reference to the Bot
On Wed, Oct 28, 2015 at 10:03 AM, Steffen Sun Lyng <notifications@github.com
wrote:
I see, so you use this inside a normal responder, correct ?
— Reply to this email directly or view it on GitHub https://github.com/jammerware/margiebot/issues/6#issuecomment-151855249.
Okay, thanks a lot for the information.
This is an interesting idea. I'll think about this when I have time and see if I can come up with a clean way to do add architectural support for this.
I've been working on an implimentation using Margiebot, for automating tasks for my teams. I'm wondering if it has been considered how Margiebot could be extended to have a variant of responders, that doesn't only allow a single response.
A use case I have: