0

我将从“我不熟悉 Python”开始。我正在尝试为我的频道更改默认的 ircbot 脚本,但我无法获取re.matchre.search工作。

例如,这有效:

prompt = ("%s" % self.nickname)
prompt1 = ("%s:" % self.nickname)
prompt2 = ("%s," % self.nickname)

if msg == (prompt1 + " whoareyou?") or msg == (prompt2 + " who are you?") or msg == (prompt1 + " whoareyou") or msg == (prompt2 + " who are you"):

这个也是

if msg == (prompt1 + " help") or msg == (prompt2 + " help"):

然而,这两个条件不适用于机器人(但它们适用于本地脚本):

if re.search(r'%s[:,] help' % self.nickname, msg):

elif re.search(r'%s[:,] who ?are ?you?' % self.nickname, msg):

re.search可以在此处找到未使用的先前版本的脚本

4

1 回答 1

0

我找到了导致问题的原因。Twisted 包含一个处理机器人昵称冲突的逻辑。^它在名称末尾添加一个:

# For fun, override the method that determines how a nickname is changed on
# collisions. The default method appends an underscore.
def alterCollidedNick(self, nickname):
    """
    Generate an altered version of a nickname that caused a collision in an
    effort to create an unused related name for subsequent registration.
    """
    return nickname + '^'

这导致我的机器人昵称以 结尾nickname^,并且因为我曾经%s将昵称变量添加为正则表达式的一部分,所以它将 解释^为修饰符。

if re.search(r'%s[:,] help' % self.nickname, msg):

对此:

if re.search(r'nickname^[:,] help', msg):
于 2014-11-13T16:17:57.503 回答