everything works fine, it prints the multiplication but it gets stuck on adding more coins to the server, it worked ok until I added the multiplier
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}**')
any help is appreciated (typing random stuff because my post is mostly code and i need to put these edits but stack overflow is being rude so yeah)
Advertisement
Answer
Initially, you set
servermultiplier = 1 servercoins = 0
but then modified it into a string in 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
Here, result is a list of strings, so servercoins is set to a string. (This is why globals are bad!)
You later try to add it servercoins += 1 * servermultiplier, which is not allowed.
>>> 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
I still don’t know why it causes the code to hang. I would assume that the exception stopped the rest of the command from executing, and then it was silently ignored later on.