Skip to content

Instantly share code, notes, and snippets.

@dkarzon
Last active August 29, 2015 14:06
Show Gist options
  • Save dkarzon/f32a7eaf3b7a379628a2 to your computer and use it in GitHub Desktop.
Save dkarzon/f32a7eaf3b7a379628a2 to your computer and use it in GitHub Desktop.
mmbot script for tracking #CommitOfTheDay
var robot = Require<Robot>();
robot.Respond("last (.*) commits", msg =>
{
var commitNum = 3;
try
{
commitNum = Int32.Parse(msg.Match[1]);
}
catch (Exception) { }
var commits = GetCommits(robot.Brain);
var showCommits = commits.OrderByDescending(c => c.TimeStamp).Take(commitNum);
if (showCommits.Count() == 0)
{
msg.Send("No commits to show...");
return;
}
foreach(var c in showCommits)
{
msg.SendFormat("@{0} on {2:MMM dd} `{1}`", c.User, c.Message, c.TimeStamp);
}
});
robot.Respond("commitoftheday (.*) [\"'](.*)[\"']", msg =>
{
var user = msg.Match[1];
var commitMessage = msg.Match[2];
var commits = GetCommits(robot.Brain);
commits.Add(new CommitOfTheDay
{
User = user,
Message = commitMessage,
TimeStamp = DateTime.Now
});
SetCommits(robot.Brain, commits);
msg.SendFormat("Added commit for {0} with message \"{1}\"", user, commitMessage);
});
List<CommitOfTheDay> GetCommits(MMBot.Brains.IBrain brain)
{
var getTask = brain.Get<List<CommitOfTheDay>>("commitoftheday");
getTask.Wait();
return getTask.Result ?? new List<CommitOfTheDay>();
}
void SetCommits(MMBot.Brains.IBrain brain, List<CommitOfTheDay> commits)
{
var setTask = brain.Set("commitoftheday", commits);
setTask.Wait();
}
public class CommitOfTheDay
{
public string User { get; set; }
public string Message { get; set; }
public DateTime TimeStamp { get; set; }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment