Closed ktaroabobon closed 5 months ago
プロジェクトでは、Go言語のライブラリ gofeed
を使用してRSSフィードを解析します。このライブラリは、RSSとAtomフィードの解析をサポートしており、使い方も簡単です。
gofeed
ライブラリをプロジェクトに追加するには、以下のコマンドを実行します:
go get github.com/mmcdole/gofeed
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サーバーに動的なコンテンツを提供することが可能になります。
Embedを使用して記事情報をDiscordに表示するためのデザインを提案します。以下の要素を含めることを考えています:
実装を進める際は、プロジェクトの既存の設計思想であるClean Architectureに従うことが重要です。これにより、システムの疎結合性を保ちつつ、機能拡張や保守が容易になります。
0x00ff00
(緑色)と定義し、視覚的に魅力的で情報の可視性を高めます。"Published on"
というフィールド名で表示し、記事のタイムリネスを伝えます。この設計に基づき、具体的な実装計画を立て、スムーズな開発プロセスを確保します。既存のアーキテクチャガイドラインを遵守し、品質の高いソフトウェアを目指していきましょう。
As Is
To Be
/abobon-articles
を用いて表示することができる。Actions
/abobon-articles
を作成する。Assignment