Exemplo n.º 1
0
        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}");
        }
Exemplo n.º 2
0
        /// <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);
        }