public static async Task Run([TimerTrigger("0 5 15 * * *")] TimerInfo myTimer, ILogger log) { log.LogInformation($"{nameof(AggregateYesterdayNotes)} executed at {DateTime.Now}"); var credential = new Credential { Domain = GetEnvironmentVariable("MISSKEY_DOMAIN"), ClientSecret = GetEnvironmentVariable("MISSKEY_CLIENT_SECRET"), AccessToken = GetEnvironmentVariable("MISSKEY_ACCESS_TOKEN") }; var misskey = new MisskeyClient(credential); var me = await misskey.IAsync(); var data = await misskey.Charts.Users.NotesAsync(me.Id, "hour", 24 * 2); // 2 days var notes = data.Inc.Skip(1).Take(24).Sum(); var pixela = new PixelaClient(GetEnvironmentVariable("PIXELA_USER"), GetEnvironmentVariable("PIXELA_ACCESS_TOKEN")); var graphs = await pixela.Graphs.ListAsync(); if (graphs.All(w => w.Id != "misskey")) { await pixela.Graphs.CreateAsync("misskey", "Misskey Notes", "note", GraphType.Int, GraphColor.Sora, "Asia/Tokyo"); } await pixela.Pixel.CreateAsync("misskey", DateTime.Today, notes); // Azure Function's timezone is UTC log.LogInformation($"{nameof(AggregateYesterdayNotes)} ended at {DateTime.Now}"); }
/// <summary> /// bot を初期化します。 /// </summary> /// <returns>初期化された <see cref="Shell"/> のインスタンス。</returns> public static async Task <Shell> InitializeAsync() { MisskeyClient mi; var logger = new Logger(nameof(Shell)); try { var credential = File.ReadAllText("./token"); mi = new MisskeyClient(JsonConvert.DeserializeObject <Disboard.Models.Credential>(credential)); logger.Info("Misskey に接続しました。"); } catch (Exception) { logger.Error($"認証に失敗しました。セットアップを開始します。"); Write("Misskey URLを入力してください。> "); var host = ReadLine(); mi = new MisskeyClient(host); await AuthorizeAsync(mi, logger); } var myself = await mi.IAsync(); logger.Info($"bot ユーザーを取得しました (@{myself.Username})"); // 呼ばないとストリームの初期化ができないらしい await mi.Streaming.ConnectAsync(); var sh = new Shell(mi, myself, logger); sh.MaxNoteLength = (await mi.MetaAsync()).MaxNoteTextLength; return(sh); }