简体中文 English 繁體中文 日本語 Русский
本文为静态镜像,内容以交互版为准 在交互式文档中心打开 →

最初のロボットを作成する

このガイドでは、5 分鐘のクイックスタート をベースに、最初のコマンド処理プログラムを書き、その実行メカニズムを理解します。

ErisPulse のインストールやプロジェクトの初期化をまだ完了していない場合は、まず クイックスタート の「インストール」「プロジェクトの初期化」「プロジェクトの実行」の 3 つの手順を完了してください。

最初のステップ:最初のコマンドを記述する

main.py を開き、シンプルなコマンドハンドラを記述します。

from ErisPulse import sdk
from ErisPulse.Core.Event import command

@command("hello", help="挨拶メッセージを送信します")
async def hello_handler(event):
    """hello コマンドを処理します"""
    user_name = event.get_user_nickname() or "友達"
    await event.reply(f"こんにちは、{user_name}!私は ErisPulse ロボットです。")

@command("ping", help="ロボットがオンラインかどうかをテストします")
async def ping_handler(event):
    """ping コマンドを処理します"""
    await event.reply("Pong!ロボットは正常に動作しています。")

async def main():
    """メインエントリーポイント関数"""
    print("ErisPulse を起動しています...")
    
    # keep_running=True(デフォルト):フレームワークはブロックして実行を維持し、終了信号(例:Ctrl+C)が受信されるまで待ちます
    await sdk.run(keep_running=True)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

keep_running パラメータ

sdk.run(keep_running) は、フレームワークがブロックして実行を維持するかどうかを制御します。

async def main():
    await sdk.run(keep_running=False)   # 初期化後に即座に返ります
    # フレームワークはバックグラウンドで実行中です。ここでは他の処理を続行できます
    while True:
        await asyncio.sleep(3600)
        print("1時間ごとにチェックします")

run() の2つのモードに加えて、init()/uninit() を使用したライフサイクルの手動制御、個別のアダプタ/ルーティングの起動/停止など、より細かい制御方法もあります。詳細は 起動プロセスと手動制御 を参照してください。

第二ステップ:ロボットの実行

# 通常実行
epsdk run main.py

# 開発モード(ホットリロードをサポート)
epsdk run main.py --reload

第三段階:ロボットのテスト

チャットプラットフォームで次のコマンドを送信します:

/hello

これで、ロボットからの返信が届くはずです。

コード説明

コマンドデコレータ

@command("hello", help="挨拶メッセージを送信")

イベントパラメータ

async def hello_handler(event):

event パラメータは Event オブジェクトであり、以下を含みます:

完全な Event オブジェクトのメソッドについては、Event 包装クラスの詳細 を参照してください。

レスポンスの送信

await event.reply("レスポンスの内容")

event.reply() は、送信者にメッセージを送信するための便利なメソッドです。

拡張機能:追加の機能を追加

ErisPulse は、豊富なイベント処理とデータ処理機能を提供します:

よくある質問

コマンドが反応しない?

  1. アダプタが正しく設定されているか確認し、config/config.toml 内のアダプタの status が true であることを確認します。
  2. ターミナルのログ出力を確認し、エラー情報(特に ERROR レベルのログ)がないか確認します。
  3. コマンドのプレフィックスが正しいか確認します(デフォルトは / です)。設定ファイルの [ErisPulse.event.command] 部分で確認できます。
  4. コマンド名のスペルが正しいか、大文字小文字の区別が正しく設定されているか確認します。

コマンドのプレフィックスを変更するには?

config.toml に以下を追加します:

[ErisPulse.event.command]
prefix = "!"
case_sensitive = false

複数のプラットフォームをサポートするには?

ErisPulse は OneBot12 標準を用いて、異なるプラットフォームのイベント形式を統一しています。@command および @message で登録されたハンドラは、すべてのプラットフォームからのイベントを自動的に受け取ります。イベントの元プラットフォームを区別するには、event.get_platform() を使用します:

@command("hello")
async def hello_handler(event):
    platform = event.get_platform()
    
    if platform == "yunhu":
        await event.reply("你好!来自云湖")
    elif platform == "telegram":
        await event.reply("Hello! From Telegram")
    else:
        await event.reply("你好!")

詳細な多プラットフォーム対応のテクニックについては、よくあるタスクの例 を参照してください。

次のステップ