ktaroabobon / abobon-jr

0 stars 1 forks source link

特定のサイトのRSSによって最新情報を取得するコマンドの作成 #31

Closed ktaroabobon closed 5 months ago

ktaroabobon commented 5 months ago

As Is

To Be

Actions

Assignment

ktaroabobon commented 5 months ago

RSSフィードの取得と解析について

使用するライブラリ

プロジェクトでは、Go言語のライブラリ gofeed を使用してRSSフィードを解析します。このライブラリは、RSSとAtomフィードの解析をサポートしており、使い方も簡単です。

インストール方法

gofeed ライブラリをプロジェクトに追加するには、以下のコマンドを実行します:

go get github.com/mmcdole/gofeed

RSSフィードの取得と解析の実装

gofeed を利用してRSSフィードからデータを取得し、解析する基本的な方法は以下の通りです:

package main

import (
    "fmt"
    "github.com/mmcdole/gofeed"
)

func fetchRSS(url string) ([]*gofeed.Item, error) {
    fp := gofeed.NewParser()
    feed, err := fp.ParseURL(url)
    if err != nil {
        return nil, err
    }
    return feed.Items, nil
}

func main() {
    items, err := fetchRSS("https://ktaroabobon.github.io/index.xml")
    if err != nil {
        fmt.Println("Error fetching feed:", err)
        return
    }

    // 最新の5件の記事を表示
    for i, item := range items {
        if i >= 5 {
            break
        }
        fmt.Printf("[%d] %s\n", i+1, item.Title)
    }
}

このスニペットは、指定されたRSSフィードURLから記事を取得し、最新の5件のタイトルをコンソールに表示します。

統合とデプロイメント

Discordボットで /abobon-articles コマンドを受け取ったときに、上記の fetchRSS 関数を呼び出して結果をチャットに投稿する処理を実装します。エラーが発生した場合は、ユーザーに適切なフィードバックを提供するために、エラーメッセージを表示するようにします。

これにより、ユーザーがコマンドを実行するたびに最新の記事を取得し、Discordサーバーに動的なコンテンツを提供することが可能になります。

ktaroabobon commented 5 months ago

記事情報表示のためのDiscord Embedデザイン提案

要件

Embedを使用して記事情報をDiscordに表示するためのデザインを提案します。以下の要素を含めることを考えています:

実装における注意点

実装を進める際は、プロジェクトの既存の設計思想であるClean Architectureに従うことが重要です。これにより、システムの疎結合性を保ちつつ、機能拡張や保守が容易になります。

デザインの具体化

この設計に基づき、具体的な実装計画を立て、スムーズな開発プロセスを確保します。既存のアーキテクチャガイドラインを遵守し、品質の高いソフトウェアを目指していきましょう。