为不和谐的机器人制作一个变量,该变量在机器人掉线时不会重置

时间:2018-12-28 00:10:22

标签: python discord discord.py

我开始用python制作一个不和谐的机器人。我要做的是为服务器的所有成员建立一个积分系统。

我已经设置了一个“游戏”,您可以在0-9之间猜一个数字,如果正确,它将说“正确”。我需要为服务器上的每个人设置一个points变量,以便每个人都可以玩。我可以在文件的顶部设置点变量,但是每当我重新启动bot时,它将重置为0。也许我可以将所有内容保存到文本文件中并从中读取?

    if message.content.startswith('!gamble'):
    if len(message.content) != 9:
        msg = 'Improper command form' + str(len(message.content))
        await client.send_message(message.channel, msg)
        return

    num = randint(0,9)
    guess = message.content[8]
    if str(num) == str(guess):
        msg = 'You win! You guessed ' + str(guess) + ' and the number was ' + str(num)
        await client.send_message(message.channel, msg)

    else:
        msg = 'You lost :(. You guessed ' + str(guess) + ' and the number was ' + str(num)
        await client.send_message(message.channel, msg)

此部分正常工作。我可以轻松地在顶部添加一个变量,并在每次有人正确输入时添加一个点,但是随后它将回到设置的位置。您会如何建议呢?

2 个答案:

答案 0 :(得分:1)

您必须将其写入文本文件。

由于在程序运行时会将程序加载到计算机的RAM中,因此无法在Python(或我所知的任何编程语言)中保存持久变量。操作系统为您的程序分配了该内存,一旦程序运行完毕,它还会收回所有内存,因此,下次运行将不会保留任何数据。

如果您仅打算在该项目中使用Python,建议您使用pickle模块以获取简单的解决方案。此处更多信息:Python 3.7.2 docsPython 2.7.15 docs

答案 1 :(得分:0)

您不能创建任何这样的变量。解决此问题的最佳方法(我认为)是使用数据库。有很多可供选择。这里有两个例子, MySqlMongoDB