2 回答

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
您有兩個(gè)語句的計(jì)算結(jié)果都可以為 ,這意味著變量可能永遠(yuǎn)不會(huì)被創(chuàng)建。ifFalsesides
這是因?yàn)槟鷦?chuàng)建的 在函數(shù)之外,使其超出范圍。您需要將其移動(dòng)到函數(shù)內(nèi)部或聲明為全局(不建議)。sidessides
...
#active_ybna = 6
#active_danger = 6
w=""
#Successful server connection message
@client.event
async def on_ready():
print(f'{client.user.name} has connected to Discord!')
#Makes sure bot doesn't respond to itself
@client.event
async def on_message(message):
sides = 6
if message.author == client.user:
return
#Choose die (6 or 10)
if message.content.startswith('!y d6'):
sides = 6
if message.content.startswith('!y d10'):
sides = 10
#Evaluate rolls
if message.content.startswith('!y'):
if int(message.content[2])>int(0):
z = int(message.content[2])
for x in range(z):
y = randint(1,int(sides))
active_ybna = 'ybna'+ sides + '_faces()'
response = 'Roll ' + str(x+1) + ': ' + active_ybna(y)
await message.channel.send(response)
if len(message.content)>=4:
if int(message.content[4])>int(0):
z = int(message.content[4])
for x in range(z):
y=randint(1,int(sides))
active_danger = 'danger'+ sides + '_faces()'
response = 'Danger ' + str(x+1) + ': ' + active_danger(y)
await message.channel.send(response)
client.run(TOKEN)您有兩個(gè)語句的計(jì)算結(jié)果都可以為 ,這意味著變量可能永遠(yuǎn)不會(huì)被創(chuàng)建。ifFalsesides
這是因?yàn)槟鷦?chuàng)建的 在函數(shù)之外,使其超出范圍。您需要將其移動(dòng)到函數(shù)內(nèi)部或聲明為全局(不建議)。sidessides
...
#active_ybna = 6
#active_danger = 6
w=""
#Successful server connection message
@client.event
async def on_ready():
print(f'{client.user.name} has connected to Discord!')
#Makes sure bot doesn't respond to itself
@client.event
async def on_message(message):
sides = 6
if message.author == client.user:
return
#Choose die (6 or 10)
if message.content.startswith('!y d6'):
sides = 6
if message.content.startswith('!y d10'):
sides = 10
#Evaluate rolls
if message.content.startswith('!y'):
if int(message.content[2])>int(0):
z = int(message.content[2])
for x in range(z):
y = randint(1,int(sides))
active_ybna = 'ybna'+ sides + '_faces()'
response = 'Roll ' + str(x+1) + ': ' + active_ybna(y)
await message.channel.send(response)
if len(message.content)>=4:
if int(message.content[4])>int(0):
z = int(message.content[4])
for x in range(z):
y=randint(1,int(sides))
active_danger = 'danger'+ sides + '_faces()'
response = 'Danger ' + str(x+1) + ': ' + active_danger(y)
await message.channel.send(response)
client.run(TOKEN)

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
我認(rèn)為我發(fā)布的變量未聲明為全局變量。我稍微簡(jiǎn)化了這一切,并將其塞進(jìn)一個(gè)具有多個(gè)IF的事件中。
還添加了一些其他代碼...
# ybnabot.py
#d6 functionality
import os
from random import randint
import discord
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
client = discord.Client()
def ybna6_faces(x):
return{
1: 'No, And...',
2: 'No...',
3: 'No, But...',
4: 'Yes, But...',
5: 'Yes...',
6: 'Yes, And...'
}[x]
def danger6_faces(x):
return{
1: 'Blank',
2: 'Blank',
3: 'Blank',
4: 'Blank',
5: ':skull:',
6: ':skull: :skull:'
}[x]
def ybna10_faces(x):
return{
1: 'No, And...',
2: 'No, And, But...',
3: 'No...',
4: 'Not, But...',
5: 'No, But, And...',
6: 'Yes, But, And...',
7: 'Yes, But...',
8: 'Yes...',
9: 'Yes, And, But...',
10: 'Yes, And...'
}[x]
def danger10_faces(x):
return{
1: 'Blank',
2: 'Blank',
3: 'Blank',
4: 'Blank',
5: ':skull',
6: ':skull: :skull',
7: 'Blank',
8: 'Blank',
9: ':skull:',
10: ':skull: :skull:'
}[x]
@client.event
async def on_ready():
global sides
sides = 6
print(f'{client.user.name} has connected to Discord!')
@client.event
async def on_message(message):
global sides
if message.author == client.user:
return
#Send Help DM
if message.content.startswith('!y help'):
await message.author.send('YBNA Bot Help!')
await message.author.send('Commands:')
await message.author.send('!y X Z - Roll X number of YBNA dice and Z Danger dice (Danger die can be omitted)')
await message.author.send('!y d6 - Choose six sided dice')
await message.author.send('!y d10 - Choose 10 sided dice')
await message.author.send('!y dice - Displays which dice are selected (d6 or d10)')
await message.author.send('!y help - This message!')
await message.author.send('txutfz73 credits here')
await message.author.send('github link here')
return
#Check die used
if message.content.startswith('!y dice'):
response = 'Using ' + str(sides) + ' sided dice!'
await message.channel.send(response)
return
#Choose d6 or d10
if message.content.startswith('!y d6'):
sides = 6
await message.channel.send('Now using d6!')
return
if message.content.startswith('!y d10'):
sides = 10
response = 'Now using d10!'
await message.channel.send(response)
return
#Roll d6
if sides == 6:
if message.content.startswith('!y'):
if int(message.content[2])>int(0):
z = int(message.content[2])
for x in range(z):
y = randint(1,6)
response = 'Roll ' + str(x+1) + ': ' + ybna6_faces(y) + str(sides)
await message.channel.send(response)
if len(message.content)>=4:
if int(message.content[4])>int(0):
z = int(message.content[4])
for x in range(z):
y=randint(1,6)
response = 'Danger ' + str(x+1) + ': ' + danger6_faces(y)
await message.channel.send(response)
#Roll d10
else:
if message.content.startswith('!y'):
if int(message.content[2])>int(0):
z = int(message.content[2])
for x in range(z):
y = randint(1,10)
response = 'Roll ' + str(x+1) + ': ' + ybna10_faces(y) + str(sides)
await message.channel.send(response)
if len(message.content)>=4:
if int(message.content[4])>int(0):
z = int(message.content[4])
for x in range(z):
y=randint(1,10)
response = 'Danger ' + str(x+1) + ': ' + danger10_faces(y)
await message.channel.send(response)
client.run(TOKEN)
添加回答
舉報(bào)