首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 實作「古城鐘樓」微博自動報時機器人:地支時間與鐘聲邏輯

     編輯:關於C#

前言

「古城鐘樓」微博帳號以純機器人方式每兩小時報時,內容為地支時辰 + 對應次數的「鏛~」,單日漲粉 20 萬。本文還原其核心邏輯並提供完整 C# 控制台程式碼 (約 100 行)。

地支時辰對照表 (北京時間)

地支時段整點
子23:00-01:0000:00
丑01:00-03:0002:00
寅03:00-05:0004:00
卯05:00-07:0006:00
辰07:00-09:0008:00
巳09:00-11:0010:00
午11:00-13:0012:00
未13:00-15:0014:00
申15:00-17:0016:00
酉17:00-19:0018:00
戌19:00-21:0020:00
亥21:00-23:0022:00

規律:每兩小時整點發布,內容 = 【{地支}時】 + 「鏛~」重複 N 次。N = 上午時點數 (0=子, 2=丑...10=巳);下午 = (小時 - 12)。

完整程式碼 (.NET Framework 4.0+)


using System;
using System.Collections.Generic;
using System.Globalization;
using System.Timers;
using NetDimension.Weibo; // NuGet: NetDimension.Weibo

namespace WeiboTimer
{
    class Program
    {
        static string AppKey = "你的_AppKey";
        static string AppSecret = "你的_AppSecret";
        static string CallbackUrl = "你的_CallbackUrl";

        static Timer _timer = new Timer();
        static OAuth _oauth;
        static Client _sina;

        static void Main(string[] args)
        {
            _oauth = Authorize();
            if (string.IsNullOrEmpty(_oauth.AccessToken)) return;

            _sina = new Client(_oauth);
            var uid = _sina.API.Entity.Account.GetUID();
            var user = _sina.API.Entity.Users.Show(uid);
            Console.WriteLine($"登入成功:@{user.ScreenName} (https://weibo.com/{user.ProfileUrl})");

            _timer.Interval = 60000; // 1 分鐘檢查一次
            _timer.Elapsed += TimerElapsed;
            _timer.AutoReset = true;
            _timer.Start();

            Console.WriteLine("定時任務啟動,按任意鍵結束...");
            Console.ReadKey();
        }

        static OAuth Authorize()
        {
            var o = new OAuth(AppKey, AppSecret, CallbackUrl);
            while (!ClientLogin(o))
                Console.WriteLine("登入失敗,請重試。");
            return o;
        }

        static bool ClientLogin(OAuth o)
        {
            Console.Write("微博帳號: ");
            var account = Console.ReadLine();
            Console.Write("登入密碼: ");
            var pwdColor = Console.ForegroundColor;
            Console.ForegroundColor = Console.BackgroundColor; // 隱藏輸入
            var password = Console.ReadLine();
            Console.ForegroundColor = pwdColor;
            return o.ClientLogin(account, password);
        }

        static void TimerElapsed(object sender, ElapsedEventArgs e)
        {
            var now = DateTime.Now;
            var content = MakeContent(now.Hour, now.Minute);
            if (string.IsNullOrEmpty(content)) return;

            try
            {
                var status = _sina.API.Entity.Statuses.Update(content);
                var created = DateTime.ParseExact(status.CreatedAt,
                    "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture);
                Console.WriteLine($"本機:{now:G} 微博:{created:G} 內容:{status.Text}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"發布失敗: {ex.Message}");
            }
        }

        static string MakeContent(int hour24, int minute)
        {
            var diZhi = "子|丑|寅|卯|辰|巳|午|未|申|酉|戌|亥".Split('|');
            if (hour24 % 2 != 0 || minute != 0) return ""; // 僅偶數整點

            var bells = "";
            int count = hour24 >= 12 ? hour24 - 12 : hour24;
            for (int i = 0; i < count; i++) bells += "鏛~";

            return $"【{diZhi[hour24 / 2]}時】{bells}";
        }
    }
}

關鍵實作細節

  • OAuth 登入:使用 NetDimension.Weibo (官方推薦 C# SDK),支援 ClientLogin 密碼模式 (需帳號開啟 API 權限)。
  • 密碼隱藏:Console.ForegroundColor = Console.BackgroundColor 視覺隱藏,非真正安全輸入。
  • 定時器精度:Timer.Interval = 60000 每分鐘檢查,配合 hour % 2 == 0 && minute == 0 確保整點觸發。
  • 時間同步:回傳 status.CreatedAt 解析微博伺服器時間,對比本機時間發現漂移可校正。
  • 鐘聲計算:count = hour >= 12 ? hour - 12 : hour 完美對應上午/下午敲擊次數。

執行畫面

古城鐘樓微博截圖

程式執行畫面

下載與部署

  1. 安裝 .NET Framework 4.0。
  2. 下載編譯後程式:guchengzhonglou.rar (內含 Weico.iPhone AppKey)。
  3. 填入自身微博開放平台申請的 AppKey/AppSecret/CallbackUrl。

結語

百行代碼複刻百萬粉絲大號核心功能,展示了「簡單邏輯 + 穩定執行 + 獨特內容」的傳播威力。同理可擴展為「每日一句」「節氣提醒」「股市收盤」等垂直領域機器人,歡迎發揮創意。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved