def activate(self):
super().activate()
if 'tokens' not in self:
self['tokens'] = {}
@botcmd
def set_redmine_token(self, msg, args):
# See http://errbot.io/en/latest/user_guide/plugin_development/persistence.html#caveats
# for an explanation of the mutable thing.
with self.mutable('tokens') as tokens:
tokens[msg.frm.person] = args
return "API token set"
@botcmd
def do_redmine_thing(self, msg, args):
if msg.frm.person not in self['tokens']:
return "I don't have a token for you, please set it with !set_redmine_token <token>"
# Now do your API thing, using the token from
# self['tokens'][msg.frm.person]
您询问如何存储所有插件都可以访问的信息。这可以通过plugin dependencies实现,但实际上似乎不适用于您的用例,因为您似乎只需要这些用户令牌在redmine插件中进行redmine,而不需要任何其他插件。你知道吗
首先,它取决于你的插件需要如何验证自己来重新挖掘。基于你的问题,我假设Redmine只是在用户配置文件设置中提供了一个API密钥,你需要存储和使用它,所以我将继续使用它,但是如果获取所述令牌的方法更加复杂的话。你知道吗
因此,假设用户可以从其配置文件中获取API令牌,并且只需要让机器人使用它,则可以:
为用户提供设置API令牌的命令,并使用builtin persistence存储它:
在对redmine进行API调用时,您可以查看是否为发出命令的用户提供了一个令牌,并使用该令牌,否则显示一个错误:
请注意,上面是一个非常简单的例子。您可能希望使用
arg_botcmd
而不是普通的botcmd
来更好地解析参数,进行更多的错误检查,等等相关问题 更多 >
编程相关推荐