HexChat IRC 客户端的随机化脚本,在 Python 或 Perl 中

Posted

技术标签:

【中文标题】HexChat IRC 客户端的随机化脚本,在 Python 或 Perl 中【英文标题】:Randomizing script for HexChat IRC Client, in Python or Perl 【发布时间】:2015-02-24 11:02:18 【问题描述】:

我有一种预感,这个问题的答案非常简单,但我还是想不通(我可能根本不懂这些语言的事实)。 我需要的是一个可以这样工作的脚本:

    首先,键入 !random 之类的命令和 1-100 范围内的数字(该数字表示成功的概率,以 % 为单位)[例如:!random 78] 然后,它会 - 根据给定的概率 - 选择您是否成功 [例如,使用 !random 78,结果为“成功”的概率为 78%] 然后,它会在频道上显示一条公共消息,结果是什么(“成功”或“失败”)

我需要这个用于在线文本 RPG 会话。也对不起我的英语不好。

代码现在的样子:

    __module_name__ = "HexChat Randomiser"
    __module_version__ = "0.1"
    __module_description__ = "A randomiser for HexChat."
      
    import random
    import xchat

def callback(word, world_eol, userdata):
    number = word[1]
    if random_chance(number):
        print ("Success")
    else:
        print ("Failure")


    def random_chance(percent_chance):
        return random.randrange(1, 101) > (100 - percent_chance)


    xchat.hook_command("random", callback, help="/random <number>")

错误:

Traceback (most recent call last):
File "<string>", line 10, in callback
File "<string>", line 17, in random_chance
TypeError: unsupported operand type(s) for -: 'int' and 'str'

【问题讨论】:

【参考方案1】:

首先,您可能想查看 Python 或 Perl hexchat 文档。

如果您想继续使用 python,我已经编写了一个小脚本来帮助您入门:

import random
import xchat

def callback(word, world_eol, userdata):
    number = word[1]
    if random_chance(number):
        print "Success"
    else:
        print "Failure"


def random_chance(percent_chance):
    return random.randrange(1, 101) > (100 - int(percent_chance))
       

xchat.hook_command("random", callback, help="/random <number>")

你必须自己让它在 hexchat 中工作。要加载脚本,您必须先将其保存在某个位置,然后调用 load command:

加载

加载具有给定文件名的脚本。 /load 也可以。

【讨论】:

非常感谢!我更改了代码中的一些内容,因此它现在可以在 HexChat 中正确加载。不幸的是,当我输入 /random 命令时,会发生错误。我将它粘贴到我原来的帖子中。 你得到的不是数字而是字符串,你需要把它变成一个 int 才能工作。将100 - percent_chance 更改为100 - int(percent_chance)。我什至不确定word[1] 是数字,这就是为什么我说你必须自己做腿部工作。 最后一件事:如何在“成功”和“失败”前一行显示我刚刚使用的命令(例如“/random 65”),以便其他用户知道我实际使用过它而不只是手动输入结果? rtfm

以上是关于HexChat IRC 客户端的随机化脚本,在 Python 或 Perl 中的主要内容,如果未能解决你的问题,请参考以下文章

irc 关键操作

在 Twitch bot 中添加帐户和更加用户友好的集成

在网页中嵌入 IRC 客户端的最佳方式

IRC 日志记录脚本

字符串触发 IRC 脚本

我的随机化脚本的 Unity 2D 问题