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
我仍然不知道为什么会导致代码挂起。我会假设异常阻止了命令的其余部分的执行,然后它后来被默默地忽略了。
一切正常,它打印了乘法,但在向服务器添加更多硬币时卡住,在我添加乘数之前它工作正常
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
我仍然不知道为什么会导致代码挂起。我会假设异常阻止了命令的其余部分的执行,然后它后来被默默地忽略了。