Flutter自动聊天动作插件auto_chat_action的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter自动聊天动作插件auto_chat_action的使用

概述

AutoChatAction 是一个用于 Televerse 的插件,Televerse 是一个基于 Dart 的 Telegram Bot API 库。该插件会根据调用的方法自动发送聊天动作,如 “正在输入…” 或 “正在上传照片…”。这一功能通过显示正在进行的机器人活动来增强用户体验。

安装

在你的项目中添加 auto_chat_action 包,使用 Dart 的包管理器:

dart pub add auto_chat_action

使用

使用 AutoChatAction 非常简单。首先,创建你的 Televerse 机器人类实例,如下所示:

final bot = Bot(Platform.environment["BOT_TOKEN"]!);

接下来,将 AutoChatAction 插件附加到机器人上。可以使用 Bot.use 方法来实现这一点:

void main() {
  bot.use(AutoChatAction());

  // 其余代码...
}

就是这样!只需一行代码即可完成。

现在,每次调用 sendVideosendDocumentsendStickersendVoicesendMessagesendLocationsendVideoNotesendPhoto 方法时,相应的聊天动作将自动发送给相应的终端用户。

仅在一个上下文中使用

如果你出于某种原因不希望为每个 API 调用都使用该插件,并且只想在特定上下文中应用它,可以使用 Context.use() 方法而不是 Bot.use() 方法来附加插件:

bot.command('test', (ctx) async {
  ctx.use(AutoChatAction());

  // 其余代码
});

配置

AutoChatAction 类可以通过以下属性进行自定义:

  • allowedMethods: 一个允许发送聊天动作的 API 方法列表,默认包括:

    [
      APIMethod.sendVideo, 
      APIMethod.sendDocument, 
      APIMethod.sendSticker, 
      APIMethod.sendVoice, 
      APIMethod.sendMessage, 
      APIMethod.sendLocation, 
      APIMethod.sendVideoNote, 
      APIMethod.sendPhoto, 
    ]
    
  • disallowedMethods: 一个不允许发送聊天动作的 API 方法列表,默认为空列表。

  • interval: 重复发送聊天动作之间的持续时间,默认为 3 秒。

示例配置

const autoChatAction = AutoChatAction(
  allowedMethods: [APIMethod.sendMessage, APIMethod.sendPhoto],
  disallowedMethods: [APIMethod.sendVoice],
  interval: Duration(seconds: 5),
);

bot.use(autoChatAction);

在这个配置中,只有 sendMessagesendPhoto 方法会自动发送聊天动作。sendVoice 方法被显式禁止,且两次动作之间的间隔设置为 5 秒。

完整示例

import 'dart:io';
import 'package:auto_chat_action/auto_chat_action.dart';
import 'package:televerse/televerse.dart';

final bot = Bot(Platform.environment["BOT_TOKEN"]!);

void main() {
  bot.use(AutoChatAction());

  final keyboard = Keyboard()
      .text("Photo")
      .text("Video")
      .row()
      .text("Voice")
      .text("Document")
      .resized();

  Future<void> startHandler(Context ctx) async {
    await ctx.reply(
      "Hello, choose a type of file from the buttons.",
      replyMarkup: keyboard,
    );
  }

  bot.command('start', startHandler);
  bot.onMessage(startHandler);

  bot.text("Voice", (ctx) async {
    await ctx.replyWithVoice(
      InputFile.fromUrl(getUrl("audio")),
      caption: thanks,
      parseMode: ParseMode.html,
    );
  });

  bot.text("Video", (ctx) async {
    await ctx.replyWithVideo(
      InputFile.fromUrl(getUrl("video")),
      caption: thanks,
      parseMode: ParseMode.html,
    );
  });

  bot.text("Photo", (ctx) async {
    await ctx.replyWithPhoto(
      InputFile.fromUrl(getUrl("photo")),
      caption: thanks,
      parseMode: ParseMode.html,
    );
  });

  bot.text("Document", (ctx) async {
    await ctx.replyWithDocument(
      InputFile.fromUrl(getUrl("document")),
      caption: thanks,
      parseMode: ParseMode.html,
    );
  });

  bot.start();
}

// 全局变量

const base = "https://televerse-space.web.app/";
const fileMap = {
  "video": "example/video.mp4",
  "audio": "example/audio.mp3",
  "document": "example/document.pdf",
  "photo": "example/photo.jpg",
};

const thanks =
    'Credits to <a href="https://file-examples.com/">File Examples</a> for the file.';
// 获取 URL 方法,指向托管的示例文件
String getUrl(String file) {
  return "$base${fileMap[file]}";
}

谢谢

感谢你使用 AutoChatAction!我们希望这个插件能提升你使用 Televerse 开发机器人的体验。如果你遇到任何问题或有建议,请自由地贡献或在 GitHub 仓库中提出问题。


更多关于Flutter自动聊天动作插件auto_chat_action的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自动聊天动作插件auto_chat_action的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用auto_chat_action插件的一个简单示例。这个插件通常用于在聊天应用中实现一些自动化的聊天动作,比如发送消息、表情等。需要注意的是,实际使用中可能需要根据具体需求进行调整和扩展。

首先,确保你已经在pubspec.yaml文件中添加了auto_chat_action依赖:

dependencies:
  flutter:
    sdk: flutter
  auto_chat_action: ^最新版本号  # 请替换为实际的最新版本号

然后,运行flutter pub get来安装依赖。

接下来,我们可以创建一个简单的Flutter应用来演示如何使用auto_chat_action插件。以下是一个基本的示例代码:

main.dart

import 'package:flutter/material.dart';
import 'package:auto_chat_action/auto_chat_action.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Auto Chat Action Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: ChatScreen(),
    );
  }
}

class ChatScreen extends StatefulWidget {
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final List<String> messages = [];
  final TextEditingController controller = TextEditingController();

  void sendMessage() {
    setState(() {
      messages.add(controller.text);
      controller.clear();
    });
  }

  void triggerAutoChatAction() {
    // 这里可以根据需要设置自动发送的消息或动作
    String autoMessage = "这是一个自动发送的消息!";
    setState(() {
      messages.add(autoMessage);
    });
    // 你可以在这里添加更多自定义的自动聊天动作,比如发送表情、图片等
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Chat Screen'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          children: <Widget>[
            Expanded(
              child: ListView.builder(
                itemCount: messages.length,
                itemBuilder: (context, index) {
                  return Padding(
                    padding: const EdgeInsets.symmetric(vertical: 4.0),
                    child: Text(messages[index]),
                  );
                },
              ),
            ),
            TextField(
              controller: controller,
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                hintText: 'Type a message...',
              ),
              onEditingComplete: sendMessage,
              onSubmitted: (value) {
                sendMessage();
              },
            ),
            ElevatedButton(
              onPressed: () {
                triggerAutoChatAction();
              },
              child: Text('Trigger Auto Chat Action'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的聊天界面,用户可以输入消息并发送。同时,我们提供了一个按钮来触发自动聊天动作,这里简单地实现为发送一个预定义的消息。

需要注意的是,auto_chat_action插件可能包含更多复杂的功能,比如定时发送消息、根据上下文自动回复等。这些功能通常需要根据插件的文档进行更深入的配置和使用。

由于auto_chat_action是一个假设的插件名称(因为Flutter官方并没有一个直接叫做auto_chat_action的插件),你可能需要找到一个实际存在的插件或者根据自己的需求创建一个自定义的插件来实现这些功能。上面的代码主要是为了展示如何在Flutter应用中集成和使用一个类似的插件的基本框架。

回到顶部