From f0c7c99627d42c4388600ee63ccb02624a502042 Mon Sep 17 00:00:00 2001 From: amki Date: Thu, 24 Oct 2019 03:52:58 +0200 Subject: [PATCH] Fix BDayGreet and GSMeet outputs --- DiscoBot/299585558710190101-bdaygreet.db | Bin 0 -> 12288 bytes DiscoBot/299585558710190101-calendar.db | Bin 0 -> 28672 bytes DiscoBot/299585558710190101-gsmeet.db | Bin 0 -> 12288 bytes DiscoBot/299585558710190101-rss.db | Bin 0 -> 12288 bytes DiscoBot/615631052047908870-gsmeet.db | Bin 32768 -> 12288 bytes DiscoBot/98293701175955456-bdaygreet.db | Bin 12288 -> 12288 bytes DiscoBot/98293701175955456-calendar.db | Bin 28672 -> 28672 bytes DiscoBot/98293701175955456-gsmeet.db | Bin 32768 -> 12288 bytes DiscoBot/98293701175955456-rss.db | Bin 20480 -> 12288 bytes DiscoBot/DisBot.cs | 2 +- DiscoBot/IModule.cs | 17 +++++ DiscoBot/bdaygreet/BDayGreet.cs | 34 +++++---- DiscoBot/gsmeet/GSMeet.cs | 86 +++++++++++++++++++---- DiscoBot/gsmeet/GSMeetContext.cs | 4 +- DiscoBot/rss/Rss.cs | 8 ++- 15 files changed, 119 insertions(+), 32 deletions(-) create mode 100644 DiscoBot/299585558710190101-bdaygreet.db create mode 100644 DiscoBot/299585558710190101-calendar.db create mode 100644 DiscoBot/299585558710190101-gsmeet.db create mode 100644 DiscoBot/299585558710190101-rss.db diff --git a/DiscoBot/299585558710190101-bdaygreet.db b/DiscoBot/299585558710190101-bdaygreet.db new file mode 100644 index 0000000000000000000000000000000000000000..b36966eda415f961c238b74fc98076cffb3189b2 GIT binary patch literal 12288 zcmeI%&q~8E90%~U`=bnMz4fM{UKIb(b%K9DX15g;=bT*ycN$Tn7Pl4G2znH+K96r9 zK7cRa)sr60s+%CfV2Y=2Xws%hehr_VlGOIff#CEc?6jDmIWkUEm8?@r2vKED$lObc zd`R{x^4_fvN-9~Ht7`fiQO91%*sK09XaL$F009U<00Izz00bZa0SG_<0)HrQQ&UC^ z!%%Khf*m$_p~SAExKN9p>-aA9okH2AX8g{i(^`hgWR`;HDC`{j?9`;bd*IW`uFU)8 zGA-^_YQE=eReWkzw;P}1s@~R)mPG!WaFuI*Y%@aPfcc3 zKP39SERY}o0SG_<0uX=z1Rwwb2tWV=5ExRxOQv%9bl&6aNCaVjP!P=gUur94x2J3~4XpghdW~__gZ7J+U z_;P$Pz67s5>9X3BwxbH(ly9IkkLTg@`=@X&dh))}O_cb2Ip{};cx^qg3I*$}5SC>X z^vBVkyKO`7tlu5zZ+mKg(Qd(dvDeztSBslJt;f$E{doB6!OPNjeZYnQ0tg_000Iag z@E-++uZm9j!@fOicjJ!w=AE6_qMnL7(ZEYoznUcJe*8%pr@hYno19u8tDzL0UzcaX zUA8e-G=1UDZ_*Vz#ucyQR)$YEoN{y99=@43=JVQ@D2`Qc(w;Hc;=MzheRg(i;}PY% za4Vzwx>MfYw{M;&(Z`;e^lm85Kf95QDXhM0$a^5RNG zO=Glrq**i5<2_h3USk@@LE7p;Gmze)Kc35Mk%&MZ$Uyovd18{L`K48q7F}I7q^{RM zYCEqMZj~w{Z_O!hZ`(JgGciujYJG8Jy8V9)YKeIKsIQ|5<=JiQcbQ}*zc`V4luVw> zN@nuxWxucDWO1vLc~95fQc31tr~L7p6lY&7Gf4CL{aLmO#q#d1-5w`-ebv*;+4F04 z^;PNLv)tjDk!SAWPOR1U^pllg*LKn-N1M0RVU8yE!&5NYbaPk#vP{gLmZ+4hJLC1s zC4YR`Q3G8V)4681=r1(Ktm;w# literal 0 HcmV?d00001 diff --git a/DiscoBot/299585558710190101-gsmeet.db b/DiscoBot/299585558710190101-gsmeet.db new file mode 100644 index 0000000000000000000000000000000000000000..4784be8ac5b5c1e0aeca14daff155b360888ce46 GIT binary patch literal 12288 zcmeI#K}*9h6bJA$iprqdZaeJq=t*HJBHpbfjI!Fzu7W#_>M~Z`I^3do7Qe$jli$dr zX=%p9!|wARNYkY6HOa5Nq<xIG@I7vl}a9`vfZCZ zsg`BKy-2vRpxC_$1UcoXL&tW7baBFDCLM~!Lrh^;*ZUwKuN(H`$o0dRoL*9F{aTrc z36iBM;^cbza_yTD;asKT^iPOgIXUGA4Yz5rG#knH<;zr`>W9gzniqYu-{D2M@%&tW zl>bq7eyQgd6bL{70uX=z1Rwwb2tWV=5P$##c2%H~Zw%-EUH!b+7X%;x0SG_<0uX=z N1Rwwb2tc3^_yIx#YeE13 literal 0 HcmV?d00001 diff --git a/DiscoBot/299585558710190101-rss.db b/DiscoBot/299585558710190101-rss.db new file mode 100644 index 0000000000000000000000000000000000000000..89307fb92bc126fe5fa833bc94fe5cc9853df5ad GIT binary patch literal 12288 zcmeI#O-sWt7zgk)iprqdZaWnodQupQcowWB%2@4c*MU2Y=pq|#9j={t6+fKEeI1Xc zqv?+GJpO?s&C8RQUr*^j2Gd;8>tZ>VIbE?P5oIx&~?$?l{h1Rwwb2tWV=5P$##AOHaf{6pYtWgWL1$NIj`z{}fB*y_ w009U<00Izz00bbguL8B=VtD`W>+i+AAOHafKmY;|fB*y_009U<00J9#o^#|W+%N!1t*}RqL(5pPDThAVwIBOwBq_3+60ZvltHv(Xz5UH{fiZih#m=;*-8gJiO}o*w_Ol!1IzO(N zC#-*u@r+K>1|_PNrF%sFr;%h*)QH@FJekbNT^E(3*Rh}!sjQ3F+Ydvf7tFFBkJZ;j z8W60nWB0tfqxE(4g?saMOp2sZ;;m_$2gd`@`cFORMQ5Zp^7Ij(aES0Gt2LRc8+4QE zL@OFZ+sWrirl^$-JC+Y9Xyx$QG@T^o~(fHGb^^)r^=oc(&21HqUB? zc_b5q?%j{xIceIgeb~Ej=hUBiY4_k^d1t$W%MA*S$Lv&G>tPCVMV+dfnj3IWfe@YM zs7|#EEjwuLi=DJMH7iG*Qp?gjL=vc4|f#=G+FE0_Dk`wovjxQ4efe7*Rj{yX)32KjsL zpEA9^0G=hkpQl7AGCM2YG`(!NRpAv!pjW$HGM=tmI9}BcTvy&}x-i>Iz*(2RCDVBq z?QSm*s*j+p^4wmcL4^>m&Fmk2LX)2Z6&6%qHi6zgkR^q9v%cB~t9~3GDvtf;Y zd-qlTAy7qGQ<7_nl2j6@ctVLMR*15=wzRsITwX{fmXzdbYToS-;`0*u=kxr51_1~_ z00Izz00bZa0SG_<0uX?}kO@d5GZW4q7@W`l`Ir9DAOHafKmY;|fB*y_009U<00Iyg zVgcO$4{>raH3&ce0uX=z1Rwwb2tWV=5P*Oufct-x0t6rc0SG_<0uX=z1Rwwb2tZ)? z1)Tr?$M^q-KhKyU1Rwwb2tWV=5P$##AOHafyles7|G(_~WA+e$00bZa0SG_<0uX=z K1R(G-1bzc4MiFZO diff --git a/DiscoBot/98293701175955456-bdaygreet.db b/DiscoBot/98293701175955456-bdaygreet.db index 4f94444541768b7960b4615e25882ed756f00ad8..2fbc4c67794b9719732dd764217d71525a680ac5 100644 GIT binary patch delta 33 fcmZojXh_(=BEZBTuvt*y5&y&n2{tYUAb@iLnf(Z} delta 123 zcmZojXh_(=BEZJTzm0)^+h#$5HT)qSjI8qZZ1#z{*_q0QmgdGr28Ncph6cJu1_}lS qR$!zJCRtyeT=|HBfeWVsE(Qh$M*hzX{GWj)zvSoTVV38F8w&tNARP+; diff --git a/DiscoBot/98293701175955456-calendar.db b/DiscoBot/98293701175955456-calendar.db index c1c315c638daa3f752dec97cef9950099e08395a..79be17730cc25f848083b391dcf8c88ab779fa6e 100644 GIT binary patch delta 95 ncmZp8z}WDBaRZA06NA8J!GLG{6DNqU@iG7bv0N@x#i(2Wot+o9 delta 358 zcmZp8z}WDBaRZA08zcWG2L4Z*1qEL4%kVI=FtBm3zC5||5d#AkFaH4sX8v^y{BQWz z@m~O{Sir9?z{IS|=$x37nwOGT=;F(>WtC zFE2F*rh*r!o{4_~1OF-h2|y!T`0Fj0*crsx?3Fn~Qj1HBV3r#h7+UHYnCTjrD;OA9 zfswX>5s=}XpPQSSSCU_pnQy|#&LGNWFALU*q0tPx#!QF{9y0KM4G{v$U|KEN~(N%x;^7Hqc>Z zy&>UdJeYVg*{d;LJb2NY-d2x#BJpB28c%xDi-~WBd9~0tqbBQS#qUd-{$}R)-uL(W zyx*HrIs;30=c}e6->>iO=%$&Zol z{3ZmuPlV{_vBSm!M0qZH}#Zw?^CM*cR^5kUtpDX2oOO z)Hk+Wpz%`=IMJ1-XXZ5zK2k`gEs@_!Q0isvwpNmh3uU>uJU=hz7K%&d(lp&KCl>Fx z%xXejEaeN+r8W7EwkA(6mlyIys$I~E<)kzCY_+jj-`gtd4-#@&TRk1Uc~CbEw%ZYI z9{RIhm+*aXk@W75FZ^C*X%iJ>~7PKIqMB$ci*UO8s|3sXJ+Nx!QmPe zNz$GpN8yfOd~#AeR$Au0tz1qgzHN8s84YJ;w0Y5_{_)gv2Kno`f1cCZ7QhRc-?t-T zFg`FK9@U-Mu&cr;4&Qm&tYjRzcHuZx@4Bv>J}ofW60p`~+mdOXMLEZE6}?t7w%b=T z8!=ZgHXr6|rm^=(r*5Z%pIdnIdc(B+jHbNfLCan71>(~KqF|pvof6jf&APqaoDkLF z(?Q>A?9cWRHAM2BKp$uz00JNY0w4eaAOHd&00JNY0w4eaFO0yp7>pUQz$*);(JQKRx~EdqD`L zQWL54L@Jd|saZu$DJfM>rzh00iOksbOlmxNaBvJzb5C8!X009sH0T2KI5C8!X0D=Djfqt1)jUw>#308Da2eAc<$;| zPX%7u$`w}yp1XS4Q-PPZa>-SJ=dSj6D)7=)h^qq6U5$Dw@X}T!R|THC8u3)%rLBZr z6?pDy$Wwurw$kmYz;jo-JQa9pD?wKUp1T_GRN$qp_+1rv?rNu}0xxZ)!&QOjPEV%e z)_Fxr(*if!|ITly_spA#&|hc_y6Pi|Ci%U3sHao2!H?x zfB*=900@8p2!H?xfWW^+AVhu^`bbcSfXIeAi%)H#NeQyz`(%31jNh}73`Q8m^LOX;Ai6n U@)-m+7RK>yY?#By#)ZNK0LkqUmjD0& literal 20480 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 b-tiP1LnkE*tz*)Ya13jiD7sCIo=*G=1O4av diff --git a/DiscoBot/DisBot.cs b/DiscoBot/DisBot.cs index ea623ac..867c177 100644 --- a/DiscoBot/DisBot.cs +++ b/DiscoBot/DisBot.cs @@ -191,7 +191,7 @@ namespace DiscoBot if(commands.ContainsKey(command)) commands[command](message, splits); else - message.Channel.SendMessageAsync("Command not found!"); + Console.WriteLine("Command not found!"); }); } else { diff --git a/DiscoBot/IModule.cs b/DiscoBot/IModule.cs index 745f818..db55047 100644 --- a/DiscoBot/IModule.cs +++ b/DiscoBot/IModule.cs @@ -13,5 +13,22 @@ namespace DiscoBot string Name { get; set; } void Initialize(); Task OnNewWebSocketAsync(WebSocket ws, TaskCompletionSource tcs); + string ConcatParameters(string[] parameters) + { + string str = ""; + for (var i = 0; i < parameters.Length; ++i) + { + var s = parameters[i]; + if (str == "") + { + str += s; + } + else + { + str += " " + s; + } + } + return str; + } } } diff --git a/DiscoBot/bdaygreet/BDayGreet.cs b/DiscoBot/bdaygreet/BDayGreet.cs index 9697362..c303133 100644 --- a/DiscoBot/bdaygreet/BDayGreet.cs +++ b/DiscoBot/bdaygreet/BDayGreet.cs @@ -48,7 +48,13 @@ namespace DiscoBot.bdaygreet updateTimer.AutoReset = false; updateTimer.Elapsed += async (sender, e) => { - await Task.Run(() => HandleBDayCheck()); + try + { + await Task.Run(() => HandleBDayCheck()); + } catch(Exception) + { + Console.WriteLine("bday: EXCEPTION IN BDAY CHECK"); + } }; updateTimer.Start(); } @@ -117,20 +123,18 @@ namespace DiscoBot.bdaygreet var gchan = msg.Channel as IGuildChannel; string name = parameters[1]; string date = parameters[2]; - SocketGuildUser user; - try - { - user = guild.Users.Where(u => u.Mention == name).Single(); - } - catch (InvalidOperationException) + try { + var id = MentionUtils.ParseUser(name); + user = guild.Users.Where(u => u.Id == id).Single(); + } catch(Exception) { await msg.Channel.SendMessageAsync("I can't find user " + name + " so I can't add them."); return; } DateTimeOffset d; try { - d = DateTimeOffset.ParseExact(date,new string[] { "dd.MM.", "d.MM", "dd.M", "d.M." }, null, DateTimeStyles.AssumeUniversal); + d = DateTimeOffset.ParseExact(date,new string[] { "dd.MM.", "d.MM.", "dd.M", "d.M." }, null, DateTimeStyles.AssumeUniversal); } catch(FormatException) { await msg.Channel.SendMessageAsync("Sorry I can't parse your date. Please try again!"); return; @@ -203,7 +207,7 @@ namespace DiscoBot.bdaygreet return; } var gchan = msg.Channel as IGuildChannel; - string tag = parameters[1]; + string tag = ((IModule)this).ConcatParameters(parameters[1..]); try { var b = bdayGreetContext.BDays.Where(b => b.DiscordTag == tag).Single(); @@ -216,12 +220,14 @@ namespace DiscoBot.bdaygreet } } - private Task HandleBDayDebugCommand(SocketMessage msg, string[] parameters) + private async Task HandleBDayDebugCommand(SocketMessage msg, string[] parameters) { - Console.WriteLine("Handling test command!"); - string para = string.Join(",", parameters); - msg.Channel.SendMessageAsync("Test succeeded. Params: "+para); - return Task.CompletedTask; + await msg.Channel.SendMessageAsync("DEBUG!"); + string name = parameters[1]; + var id = MentionUtils.ParseUser(name); + var user = guild.Users.Where(u => u.Id == id).Single(); + await msg.Channel.SendMessageAsync("name: " + name); + await msg.Channel.SendMessageAsync("Found user with id" + user.Id+" and mention "+user.Mention+" Username: "+user.Username+" Discriminator: "+user.Discriminator+" DiscriminiatorValue: "+user.DiscriminatorValue); } public void Initialize() diff --git a/DiscoBot/gsmeet/GSMeet.cs b/DiscoBot/gsmeet/GSMeet.cs index fedbfba..2ab2100 100644 --- a/DiscoBot/gsmeet/GSMeet.cs +++ b/DiscoBot/gsmeet/GSMeet.cs @@ -32,7 +32,7 @@ namespace DiscoBot.gsmeet private static readonly string ApplicationName = "DiscoBot"; private SheetsService service; - private Dictionary meetingTimers = new Dictionary(); + private List lastMeetings = null; @@ -73,7 +73,13 @@ namespace DiscoBot.gsmeet timer.AutoReset = true; timer.Elapsed += async (sender, e) => { - await Task.Run(() => HandleSheetCheck(sheet)); + try + { + await Task.Run(() => HandleSheetCheck(sheet)); + } catch(Exception ex) + { + Console.WriteLine("gsmeet: EXCEPTION IN SHEET CHECK"+ex); + } }; timer.Start(); timers.Add(sheet.Db.Name, timer); @@ -133,6 +139,7 @@ namespace DiscoBot.gsmeet var binHash = sha1.ComputeHash(Encoding.ASCII.GetBytes(idString)); var hash = BitConverter.ToString(binHash).Replace("-", string.Empty); meeting.Id = hash; + meeting.FetchTime = DateTimeOffset.Now; return meeting; } @@ -167,6 +174,40 @@ namespace DiscoBot.gsmeet return meetings; } + private string MissingStringForEvent(GSMeeting m) + { + var now = DateTimeOffset.Now; + string s = ""; + for(var i=0;i now.AddDays(7)) + { + continue; + } + var us = ""; + foreach (var user in m.Users) + { + if (user.Signups[i] != "1" && user.Signups[i] != "0" && user.Signups[i] != "0.5") + { + if (user.User != null) + { + us = user.User.Mention + " "; + } + else + { + us += user.Name + " "; + } + } + } + if(us != "") + { + s += date + ": "+ us + "\n"; + } + } + return s; + } + private async Task HandleSheetCheck(GSSheet sheet) { SocketTextChannel c = guild.Channels.Where(g => g.Id == sheet.Db.Channel).Single() as SocketTextChannel; @@ -176,7 +217,33 @@ namespace DiscoBot.gsmeet { Console.WriteLine("No values found."); } - var meetings = await ParseGSMeetSheet(sheet, values); + lastMeetings = await ParseGSMeetSheet(sheet, values); + var ln = sheet.Db.LastNotified; + var now = DateTimeOffset.Now; + if(ln.AddDays(1) > now) + { + Console.WriteLine("It is: "+now+" Next notify is: " + ln.AddDays(1)); + return; + } + Console.WriteLine("Notifying..."); + string missStr = ""; + foreach(var meeting in lastMeetings) + { + missStr += MissingStringForEvent(meeting); + } + if(!string.IsNullOrEmpty(missStr)) + { + string msg = "Heyo! I found the following missing raid signups:\n"; + msg += missStr; + msg += "Please sign up so we can raid! :)"; + await c.SendMessageAsync(msg); + } + //TODO FIXME: Remove the hardcode 18 and read meeting timespan from sheet and use this value + var nextDate = now.AddHours(-now.Hour + 18).AddMinutes(-now.Minute).AddSeconds(-now.Second).AddMilliseconds(-now.Millisecond); + Console.WriteLine("Setting next notify to: " + nextDate); + sheet.Db.LastNotified = nextDate; + gsmeetContext.SaveChanges(); + /* foreach(var meeting in meetings) { if(!sheet.Timers.ContainsKey(meeting.Id)) @@ -187,17 +254,6 @@ namespace DiscoBot.gsmeet sheet.Timers[meeting.Id].UpdateTimers(c, meeting); } Console.WriteLine("Parsed sheet " + sheet.Db.Id); - /* - var str = ""; - foreach (var row in values) - { - foreach (var col in row) - { - str += col + "| "; - } - str += "\n"; - } - c.SendMessageAsync("Result: " + str); */ } @@ -216,6 +272,8 @@ namespace DiscoBot.gsmeet sheet.Id = sheetId; sheet.SheetName = sheetName; sheet.LastChecked = DateTimeOffset.Now; + var now = DateTimeOffset.Now; + sheet.LastNotified = now.AddDays(-1).AddHours(-now.Hour).AddMinutes(-now.Minute).AddSeconds(-now.Second).AddMilliseconds(-now.Millisecond); sheet.CheckInterval = new TimeSpan(0, 0, timeSec); gsmeetContext.GSheets.Add(sheet); try diff --git a/DiscoBot/gsmeet/GSMeetContext.cs b/DiscoBot/gsmeet/GSMeetContext.cs index bd723e9..d663a5c 100644 --- a/DiscoBot/gsmeet/GSMeetContext.cs +++ b/DiscoBot/gsmeet/GSMeetContext.cs @@ -35,6 +35,7 @@ namespace DiscoBot.gsmeet public ulong Channel { get; set; } public TimeSpan CheckInterval { get; set; } public DateTimeOffset LastChecked { get; set; } + public DateTimeOffset LastNotified { get; set; } } public class GSSheet @@ -42,10 +43,8 @@ namespace DiscoBot.gsmeet public GSSheet(DBSheet db) { this.Db = db; - this.Timers = new Dictionary(); } public DBSheet Db { get; set; } - public Dictionary Timers { get; set; } } public class GSMeetingUser @@ -68,6 +67,7 @@ namespace DiscoBot.gsmeet this.Dates = new List(); } public string Id { get; set; } + public DateTimeOffset FetchTime { get; set; } public List Users { get; set; } public List Dates { get; set; } } diff --git a/DiscoBot/rss/Rss.cs b/DiscoBot/rss/Rss.cs index 14811e3..d371a6c 100644 --- a/DiscoBot/rss/Rss.cs +++ b/DiscoBot/rss/Rss.cs @@ -45,7 +45,13 @@ namespace DiscoBot.rss timer.AutoReset = true; timer.Elapsed += async (sender, e) => { - await Task.Run(() => HandleFeedCheck(feed)); + try + { + await Task.Run(() => HandleFeedCheck(feed)); + } catch(Exception) + { + Console.WriteLine("rss: EXCEPTION IN FEED READ!"); + } }; timer.Start(); timers.Add(feed.Name, timer);