将 Evennia 连接到 Twitter¶
Twitter 是一个在线社交网络服务,允许用户发送和阅读称为“推文”的短消息。以下是一个简短的教程,解释如何让用户从 Evennia 内部发送推文。
配置 Twitter¶
首先,你需要有一个 Twitter 账户。登录并在 Twitter 开发者网站上注册一个应用。确保你启用了“写”推文的权限!
要从 Evennia 发送推文,你需要“API Token”和“API Secret”字符串,以及“Access Token”和“Access Secret”字符串。
Twitter 改变了他们的要求,现在需要在 Twitter 账户上注册一个手机号码才能注册具有写权限的新应用。如果你无法做到这一点,请参阅这个开发者帖子,其中描述了如何解决这个问题。
要使用 Twitter,你必须安装 Twitter Python 模块:
pip install python-twitter
设置 Twitter,逐步指南¶
基本的推文命令¶
Evennia 默认没有 tweet
命令,因此你需要编写自己的小命令来发送推文。如果你不确定命令如何工作以及如何添加它们,可以在继续之前查看添加命令教程。
你可以在一个单独的命令模块中创建命令(例如 mygame/commands/tweet.py
),也可以与其他自定义命令一起创建,随你喜欢。代码如下:
# 例如在 mygame/commands/tweet.py 中
import twitter
from evennia import Command
# 在这里插入你从 Twitter 开发者网站获取的唯一应用令牌
TWITTER_API = twitter.Api(consumer_key='api_key',
consumer_secret='api_secret',
access_token_key='access_token_key',
access_token_secret='access_token_secret')
class CmdTweet(Command):
"""
发送推文
用法:
tweet <message>
这将发送一条推文到预配置的 Twitter 账户。
推文的最大长度为 280 个字符。
"""
key = "tweet"
locks = "cmd:pperm(tweet) or pperm(Developers)"
help_category = "Comms"
def func(self):
"执行推文操作"
caller = self.caller
tweet = self.args
if not tweet:
caller.msg("用法: tweet <message>")
return
tlen = len(tweet)
if tlen > 280:
caller.msg(f"你的推文有 {tlen} 个字符长(最多 280 个字符)。")
return
# 发布推文
TWITTER_API.PostUpdate(tweet)
caller.msg(f"你发送了推文:\n{tweet}")
请确保在适当的地方替换为你自己的 API/Access 密钥和秘密。
默认情况下,我们限制推文访问权限为具有 Developers
级别访问权限的玩家或拥有“tweet”权限的玩家。
要允许单个角色发送推文,请使用以下命令设置 tweet
权限:
perm/player playername = tweet
你可以根据需要更改锁。如果希望所有人都可以发送推文,可以将整体权限更改为 Players
。
现在,将此命令添加到你的默认命令集中(例如在 mygame/commands/default_cmdsets.py
中)并重新加载服务器。从现在起,有权限的用户可以简单地使用 tweet <message>
来从游戏的 Twitter 账户发送推文。
下一步¶
这只是一个基本的推文设置,其他可以做的事情包括:
自动将角色名称添加到推文中
增加更多的错误检查
更改锁以开放更多人发送推文的权限
将推文回显到游戏内频道
你可以设置一个脚本来发送自动推文,例如发布更新的游戏统计信息。有关帮助,请参阅推送游戏统计信息教程。