Discord.py 添加新代码后机器人功能不起作用
Discord.py bot functionality does not work after adding new codes
https://github.com/legacyks/KsBot
在我将#registration 和#registration info 部分添加到我的代码后,播放音乐的部分停止工作。当我删除#registration 和#registration info 部分时,我的音乐效果非常好。我不知道 music.py 的作用,我是从 youtube
上的视频中了解到的
相关代码块:
#Bot Initiations
KsBot = Bot(command_prefix ='//')
startup_extensions = ["Music"]
#Display Bot Info and Discord Version
@KsBot.event
async def on_ready():
print('Discord Version : ' + discord.__version__)
print('Bot User Name : ' + KsBot.user.name)
print('Bot ID : ' + KsBot.user.id)
print('----------------------')
print("Number of registered user in this server: " + str(numberOfMembers))
#Registration Info
registeredMembersFile = open("RegisteredMembers.txt")
registeredMembers = registeredMembersFile.read()
registeredMembers = ast.literal_eval(registeredMembers)
numberOfMembers = len(registeredMembers)
registeredMembersFile.close()
#Registration
@KsBot.event
async def on_message(message):
if message.content.startswith("//register"):
sender = message.author.id
print("Registering ID " + sender + " ...")
if sender in registeredMembers:
await KsBot.send_message(message.author,"Registration Fail:Already a memmber")
print("Registration Failed: Already a member")
elif sender not in registeredMembers:
print("User " + sender + " is not registered")
registeredMembers[sender] = 1000
registeredMembersFile = open("RegisteredMembers.txt",'w')
registeredMembersFile.write(pprint.pformat(registeredMembers))
registeredMembersFile.close()
await KsBot.send_message(message.author,"Registration OK!")
print("Registeration Successful")
#YetiGuy Music Bot
class Main_Commands():
def __init__(self,bot):
self.bot = bot
if __name__ == "__main__":
for extension in startup_extensions:
try:
KsBot.load_extension(extension)
except Exception as e:
exc = '{}: {}'.format(type(e).__name__,e)
print("Failed to load extension {}\n{}".format(extension,exc))
对python和discord.py还比较陌生,请帮忙:(
注意:不要担心令牌和客户端机密,我已经更改了
以防万一有人有类似的问题,我将在这里重写答案
回答:问题是您同时使用了commands
方式和on_message
方式来创建命令。要解决此问题,您可以将 on_message
命令替换为 commands
命令,或者在 on_message
中的 if 语句后添加 await bot.process_commands(message)
https://github.com/legacyks/KsBot
在我将#registration 和#registration info 部分添加到我的代码后,播放音乐的部分停止工作。当我删除#registration 和#registration info 部分时,我的音乐效果非常好。我不知道 music.py 的作用,我是从 youtube
上的视频中了解到的相关代码块:
#Bot Initiations
KsBot = Bot(command_prefix ='//')
startup_extensions = ["Music"]
#Display Bot Info and Discord Version
@KsBot.event
async def on_ready():
print('Discord Version : ' + discord.__version__)
print('Bot User Name : ' + KsBot.user.name)
print('Bot ID : ' + KsBot.user.id)
print('----------------------')
print("Number of registered user in this server: " + str(numberOfMembers))
#Registration Info
registeredMembersFile = open("RegisteredMembers.txt")
registeredMembers = registeredMembersFile.read()
registeredMembers = ast.literal_eval(registeredMembers)
numberOfMembers = len(registeredMembers)
registeredMembersFile.close()
#Registration
@KsBot.event
async def on_message(message):
if message.content.startswith("//register"):
sender = message.author.id
print("Registering ID " + sender + " ...")
if sender in registeredMembers:
await KsBot.send_message(message.author,"Registration Fail:Already a memmber")
print("Registration Failed: Already a member")
elif sender not in registeredMembers:
print("User " + sender + " is not registered")
registeredMembers[sender] = 1000
registeredMembersFile = open("RegisteredMembers.txt",'w')
registeredMembersFile.write(pprint.pformat(registeredMembers))
registeredMembersFile.close()
await KsBot.send_message(message.author,"Registration OK!")
print("Registeration Successful")
#YetiGuy Music Bot
class Main_Commands():
def __init__(self,bot):
self.bot = bot
if __name__ == "__main__":
for extension in startup_extensions:
try:
KsBot.load_extension(extension)
except Exception as e:
exc = '{}: {}'.format(type(e).__name__,e)
print("Failed to load extension {}\n{}".format(extension,exc))
对python和discord.py还比较陌生,请帮忙:(
注意:不要担心令牌和客户端机密,我已经更改了
以防万一有人有类似的问题,我将在这里重写答案
回答:问题是您同时使用了commands
方式和on_message
方式来创建命令。要解决此问题,您可以将 on_message
命令替换为 commands
命令,或者在 on_message
await bot.process_commands(message)