コード例 #1
0
        private void SyncCorpMembers(CRONJob settings)
        {
            if (settings.Enabled)
            {
                try
                {
                    List<Member> members = Api.GetCorpMembers(Convert.ToInt64(Properties.Settings.Default.CorpAPI), Properties.Settings.Default.VCode);
                    if ((members != null) && (members.Count > 0))
                    {
                        using (var db = new ApplicationDbContext())
                        {
                            members.ForEach(member =>
                                db.CorpMembers.AddOrUpdate(member)
                            );
                            db.SaveChanges();

                            var membersToDelete = new List<Member>();
                            db.CorpMembers.ToList().ForEach(member =>
                            {
                                if (!members.Any(mem => mem.ID == member.ID))
                                {
                                    membersToDelete.Add(member);
                                }
                            });

                            membersToDelete.ForEach(member =>
                                db.CorpMembers.Remove(member)
                            );
                            settings.LastRun = DateTime.UtcNow;
                            db.SaveChanges();

                            var users = db.Users.ToList();
                            users.ForEach(usr =>
                            {
                                var member = members.Where(memb => memb.Name.ToLower() == usr.UserName.ToLower()).FirstOrDefault();
                                if (member != null)
                                {
                                    if (member.Name != usr.UserName)
                                    {
                                        usr.UserName = member.Name;
                                    }
                                    usr.GetDetails(true);
                                }
                            });
                            db.SaveChanges();
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
        }
コード例 #2
0
        private void CrossPost(CRONJob settings)
        {
            if (settings.Enabled)
            {
                //Plugin.SendDirectMessage("Executing Jarvis", "clydeenmarland", Properties.Settings.Default.SlackWebhook);
                try
                {
                    var client = new Client {
                        UserName = Properties.Settings.Default.JarvisEmail,
                        Password = Properties.Settings.Default.JarvisPassword
                    };
                    if (client.Logon())
                    {
                        var messages = client.GetMessages(Properties.Settings.Default.JarvisDiscordRoom);

                        if (settings.LastRun == null)
                        {
                            messages = messages.OrderBy(msg => msg.timestamp).ToList();
                            messages.Where(msg => ((DateTime.Now - msg.timestamp).Days < 1) && (msg.content.Contains("To: coalition_pings"))).ToList().ForEach(msg =>
                            {
                                var senderlines = msg.content.Split(new[] { "\n" }, StringSplitOptions.None);

                                var payload = new MessagePayload();
                                //payload.Text = string.Format("@channel: From {0}", msg.author.username);
                                payload.Text = "@channel: Coalition Broadcast";
                                payload.Attachments = new List<MessagePayloadAttachment>();
                                payload.Attachments.Add(new MessagePayloadAttachment()
                                {
                                    Text = new Censor().CensorText(string.Join("\n", senderlines.Skip(1))),
                                    Title = string.Format("{0}", msg.timestamp.ToString("yyyy-MM-dd HH:mm:ss")),
                                    //Title = string.Format("{0}: Message from {1}", msg.timestamp.ToString("yyyy-MM-dd HH:mm:ss"), msg.author.username),
                                    Colour = "#ff6600"
                                });
                                Plugin.SendToRoom(payload, Properties.Settings.Default.JarvisSlackRoom, Properties.Settings.Default.SlackWebhook, msg.author.username);

                                foreach(var webhook in Properties.Settings.Default.DiscordLinkSlackWebhooks)
                                {
                                    Plugin.SendToRoom(payload, Properties.Settings.Default.JarvisSlackRoom, webhook, msg.author.username);
                                }
                            });
                        }
                        else
                        {
                            messages = messages.OrderBy(msg => msg.timestamp).ToList();
                            messages = messages.Where(msg =>
                            (msg.timestamp > settings.LastRun.Value
                            &&
                            (msg.content.Contains("To: coalition_pings"))
                            )).ToList();

                            messages.ForEach(msg =>
                            {
                                var senderlines = msg.content.Split(new[] { "\n" }, StringSplitOptions.None);
                                var payload = new MessagePayload();
                                //payload.Text = string.Format("@channel: From {0}", msg.author.username);
                                payload.Text = "@channel: Coalition Broadcast";
                                payload.Attachments = new List<MessagePayloadAttachment>();
                                payload.Attachments.Add(new MessagePayloadAttachment()
                                {
                                    Text = new Censor().CensorText(string.Join("\n", senderlines.Skip(1))),
                                    Title = string.Format("{0}", msg.timestamp.ToString("yyyy-MM-dd HH:mm:ss")),
                                    //Title = string.Format("{0}: Message from {1}", msg.timestamp.ToString("yyyy-MM-dd HH:mm:ss"), msg.author.username),
                                    Colour = "#ff6600"
                                });
                                Plugin.SendToRoom(payload, Properties.Settings.Default.JarvisSlackRoom, Properties.Settings.Default.SlackWebhook, msg.author.username);
                                foreach (var webhook in Properties.Settings.Default.DiscordLinkSlackWebhooks)
                                {
                                    Plugin.SendToRoom(payload, Properties.Settings.Default.JarvisSlackRoom, webhook, msg.author.username);
                                }
                            });
                        }
                        settings.LastRun = messages.LastOrDefault().timestamp.AddMilliseconds(-messages.LastOrDefault().timestamp.Millisecond).AddMinutes(1);

                        client.LogOut();
                    }
                }
                catch (Exception ex)
                {
                    //Plugin.SendDirectMessage(ex.Message, "clydeenmarland", Properties.Settings.Default.SlackWebhook);
                }
            }
        }