Skip to content

Configuration Guide

baidusteambot edited this page Oct 8, 2013 · 27 revisions

这个指南将帮助你通过修改settings.json文件来配置机器人.这个文件与steambot文件同一目录.settings-template.json文件是一个样例.

编译 SteamBot

查看 Installation Guide .

配置机器人

为了运行steambot,你必须配置你的机器人.在steambot.exe同一目录创建settings.json文件或者重命名settings-template.json.

这个设置文件采用 [JavaScript Object Notation (JSON)] (http://www.json.org) 格式,你必须遵循json的语法结构and must adhere to the syntactic structure of the language. 因此建议你安装提供的样例进行配置.

这是样例文件 template file. 本指南将在下面的章节中描述每个配置选项.

{
"Admins":["234567"],
"ApiKey":"Steam API Key goes here!",
"mainLog": "syslog.log",
"UseSeparateProcesses": "false",
"AutoStartAllBots": "true",
"Bots": [
        {
            "Username":"BOT USERNAME",
            "Password":"BOT PASSWORD",
            "DisplayName":"TestBot",
            "ChatResponse":"Hi there bro",
            "logFile": "TestBot.log",
            "BotControlClass": "SteamBot.SimpleUserHandler",
            "MaximumTradeTime":180,
            "MaximumActionGap":30,
            "DisplayNamePrefix":"[AutomatedBot] ",
            "TradePollingInterval":800,
            "LogLevel":"Success",
            "AutoStart": "true"
        }
    ]
}

主要设置选项

这些设置对所有机器人有效,而不是下面的针对某个机器人.

Admins: 你的机器人的管理员的Steam Profile IDs (64 bit IDs) 的数组,每个ID用双引号括起来,然后用逗号隔开. 这些管理员对下面列表中的所有机器人 数组有效.

ApiKey: 你像Valve申请的API key.如果你没有,去 Web API Key 也没申请. 这个是必须的,否则机器人无法工作. API Key用双引号括起来.

mainLog: 程序运行的日志文件,与机器人的日志独立.

UseSeparateProcesses: falsetrue2种选项,决定每个机器人是否用独立的进程. 默认是 false.

AutoStartAllBots: 设置为true, 所有机器人在程序开启后自动启动. 如果设置为 false ,程序检查每个机器人的选项决定是否启动.

机器人设置数组

Bots是一个保护每个独立机器人的JSON对象的数组.假如你在Bots数组中有多个机器人信息,你可以在同一时间运行多个机器人.每个机器人信息用逗号隔开.Bots中一个[{}]括起来的就是一个机器人信息,2个就是[{},{}] 3个就是[{},{},{}] .

Bots数组中每个对象包括下列信息:

  • Username: 必须提供 steam账号名,用双引号括起来.

  • Password: 必须提供 steam账号密码,用双引号括起来.

  • DisplayName: 必须提供 机器人显示的昵称, 用双引号括起来.

  • ChatResponse: 必须提供 用户向机器人发信息后,机器人发送给用户的信息. 用双引号括起来.

  • logFile: 必须提供 机器人的日志文件名. 用双引号括起来. 每个机器人必须不一样.

  • BotControlClass: 必须提供 控制机器人操作的类的完整名称 (比如说 SteamBot.SimpleUserHandler`). 一般来说,这是一个独立的文件,比如 [SimpleUserHandler.cs] (https://github.com/baidusteambot/SteamBot/blob/master/SteamBot/SimpleUserHandler.cs). 用双引号括起来.

    目前 SteamBot 提供了2个默认的类来控制机器人, SteamBot.SimpleUserHandlerSteamBot.AdminUserHandler. 你可以拓展这2个类或者修改它们来实现你所需要的功能,或者你可以模仿它们建1个新的类来控制它们.详细信息请查看下一节.

  • Admins: 针对某个机器人的管理员. 64位 Steam ID 数组_(可选)_

  • MaximumTradeTime: 某个交易的最长时间 (以秒计). 必须是数字. 默认是180秒. (可选)

  • MaximumActionGap: 机器人允许用户没操作的最长时间间隔(以秒计). 必须是数字. 默认是30秒. (可选)

  • DisplayNamePrefix: DisplayName的前缀. 必须是双引号括起来的字符串. 默认是空. (可选)

  • TradePollingInterval: 机器人在交易中的检测间隔(以微秒计). 高数值机器人反应慢,cpu使用率低. 必须是数字. 默认是 800 ms. 最低 100 ms. (可选)

  • LogLevel: 用户log等级. In order from most verbose to least verbose, valid options are:

    • Debug: Information that is helpful in performing diagnostics.
    • Info: Generally useful information such as start/stop, polling events, etc. (默认)
    • Success: Events that have completed in an expected manner.
    • Warn: Potential application problems, but which have been automatically handled.
    • Error: Event that prevents the bot from continuing to function without corrective action.
    • Interface: Events that require user interaction, such as entering a Steam Guard code to complete a login.
    • Nothing: A log level that suppresses all previous levels. (not recommended)
  • AutoStart: 当AutoStartAllBots 为false 时这个决定机器人是否自动启动.这个值不是必须的而且默认为ture.

定制UserHandlers

你可以编辑文件 SimpleUserHandler.cs 或者 AdminUserHandler.cs来定制机器人,它们基本包括了你想要的功能. 或者,你可以创建一个新的user handler类来控制机器人.

To create a custom User Handler you are going to create a class that inherits from SteamBot.UserHandler. UserHandler is an abstract base class that provides several methods that must be overridden in order to work. When you override them in your custom class you can provide any implementation you want in order to fully customize your bot's responses to trades, responses to chat messages, item validation, etc.

The UserHandler methods are mostly reactionary in nature, i.e. what to do when the bot has been proposed a trade or sent a message. These methods are explained in [UserHandler.cs] (https://github.com/Jessecar96/SteamBot/blob/master/SteamBot/UserHandler.cs) code comments but here is a basic run-down of what's available to your subclass if you decide to do this:

当你创建了自己的handler, 记得修改 BotControlClass 设置.

如果你添加一个已有的handler类,你必须把它加进与SimpleUserHandler.cs 或者 AdminUserHandler.cs相同的项目中(默认是ExampleBot). 怎么把项添加到项目中,假如你使用vs 2010,请查看 directions. 添加后,你重新编译生成,然后这个类你的bot就可以使用了.

Note: This repository is for SteamBot and not custom handlers. If you are using one of the example handlers available in other repositories and have issues you will need to file support requests on those repositories.

继承的属性和方法

下面是你自己的用户user handler从UserHandler.cs继承的变量和属性. 查看 [the source] (https://github.com/baidusteambot/SteamBot/blob/master/SteamBot/UserHandler.cs) 获取更多信息.

UserHandler.IsAdmin

当用户是设置文件中的管理员是,这个值为true. 查看上面的settings.json.

UserHandler.Log

使用Log 类你可以在窗口输出信息.

UserHandler.Bot

机器人运行的实例Bot. 你可以通过它操作机器人完成下列的操作.

  • UserHandler.Bot.SteamFriends.SendChatMessage(SteamID target, EChatEntryType type, string message): 个特定用户发送信息 (通过profile id).
  • UserHandler.Bot.SteamFriends.AddFriend(SteamID steamId): 添加好友(by profile id).
  • UserHandler.Bot.SteamFriends.RemoveFriend(SteamID steamId): 移除好友 (by profile id).

交易功能

大部分交易互动通过你重写的方法来实现.其中大部分是交易的事件.比如说用户在交易窗口添加一个物品时,OnTradeAddItem方法将被执行,你需要在OnTradeAddItem中写上你的处理程序(识别物品,添加自己的物品等等). 你可以通过 UserHandler.Trade 类的一些方法来执行这些操作.

  • UserHandler.Trade.AddItem(ulong itemid) 机器人在交易窗口中添加特定id的物品(一般来说,对某个游戏而言,每个物品的id是不一样的).
  • UserHandler.Trade.AddItemByDefindex(int defindex) 与AddItem类似, 但是使用defindex(一般来说,对某个游戏而言,每类物品的definex是相同的,比如说dota2中旧钥匙的definex都为15003).
  • UserHandler.Trade.RemoveItem(ulong itemid) 机器人移除特定id的物品.
  • UserHandler.Trade.SetReady(bool ready) 按照 ready 的布尔值来设置机器人的准备状态. true 就是就绪,false就是未就绪 .
  • UserHandler.Trade.AcceptTrade() 执行这个将确认交易,必须是双方都准备好之后.
  • UserHandler.Trade.SendMessage(string msg) 通过交易窗口发送给用户信息.

需重写的方法

在基类UserHandler中的是抽象的方法,你必须在你的User Handler重写它们. 当特定事件发生时,下来方法被执行.

  • OnChatRoomMessage: 当有群组信息时,这个方法被执行.
  • OnFriendAdd: 当有人加机器人为好友时,这个方法被执行.
  • OnFriendRemove: 当有人移除机器人好友时,这个方法被执行.
  • OnLoginCompleted: 当机器人完成登录steam后,这个方法被执行.
  • OnMessage: 当有人发送消息给机器人时,这个方法被执行
  • OnTradeRequest: 当有人邀请机器人交易时,这个方法被执行.
  • OnTradeError: 当交易过程中发送错误时,这个方法被执行.
  • OnTradeTimeout: 当 MaximumTradeTime 或者 MaximumActionGap 超过时,这个方法被执行.
  • OnTradeInit: 在交易建立后,一般来在OnTradeRequest后,这个方法被执行.
  • OnTradeAddItem: 当别人添加了物品后,这个方法被执行.
  • OnTradeRemoveItem: 当别人移除了物品后,这个方法被执行.
  • OnTradeMessage: 当有人通过交易窗口发送消息给你 (与上面的OnMessage不一样),这个方法被执行.
  • OnTradeReady: 当别人交易就绪,这个方法被执行.
  • OnTradeAccept: 当别人确认交易时,这个方法被执行.