discord bot 命令运行,但在尝试乘法时卡住

discord bot command runs, but gets stuck trying to multiply

一切正常,它打印了乘法,但在向服务器添加更多硬币时卡住,在我添加乘数之前它工作正常

import discord 
import random
from discord.ext import commands

client = commands.Bot(command_prefix = 's!')
servermultiplier = 1
servercoins = 0

@client.event
async def on_ready():
    global servercoins, servermultiplier
    file1 = open("C:/Users/squid/Documents/Stuff/ok/save.txt", 'r')
    count = 0
    result = []
    for line in file1:
        count += 1
        result.append( line.strip())
    servercoins = result[0]
    serermultiplier = result[1]
    print(servercoins)
    print('Bot is ready!')
    channel = client.get_channel(id=864049237679538189)

@client.command(aliases=['8ball', '8b', 'eb'])
async def eightball(ctx, *, question):
    responses = ['no', 'kinda', 'i guess?', 'yes', '100%', 'absolutely not', 'what are you dumb?', 'sure', 'totaly']
    await ctx.send(f'Question: {question}\nAnwser: {random.choice(responses)}')

@client.command(aliases=['b','money','cash','bal'])
async def balance(ctx):
    await ctx.send(f'Server has: **${servercoins}**')

@client.command(aliases=['give'])
async def givemoney(ctx):
    global servercoins, servermultiplier
    print('give', 1 * servermultiplier) #<- prints fine
    servercoins += 1 * servermultiplier #<- hangs here
    #anything below here doesnt work
    #vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    print('given')
    await ctx.send(f'Server now has: **${servercoins}**')

感谢任何帮助(输入随机内容,因为我的 post 主要是代码,我需要进行这些编辑,但是堆栈溢出很粗鲁,是的)

最初,您设置

servermultiplier = 1
servercoins = 0

但后来在on_ready中修改成字符串:

    for line in file1:
        count += 1
        result.append( line.strip())
    servercoins = result[0]
    serermultiplier = result[1]  # note that there's a typo here

这里,result是一个字符串列表,所以servercoins设置为一个字符串。 (这就是全局变量不好的原因!)

您稍后尝试添加它 servercoins += 1 * servermultiplier,这是不允许的。

>>> servercoins = '0'
>>> servermultiplier = 1
>>> servercoins += 1 * servermultiplier
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

我仍然不知道为什么会导致代码挂起。我会假设异常阻止了命令的其余部分的执行,然后它后来被默默地忽略了。