据我所知,from discord.ext import commands
是这样工作的:
bot = commands.Bot(command_prefix='John')
@bot.command
async def help(ctx):
ctx.send.message('help_message')
如果我发送John help,机器人会向频道发送“帮助消息”。
但是,我也希望我的机器人使用 async def on_message
检测消息,并且我希望它检测每条消息,检查其中是否包含 John,以及是否包含 >John 在里面,检查消息的其余部分,如果它不是命令之一,并且它有某个词,我希望它发送一个预先分配的响应。
我希望它是这样的:
commandlist = ['help','command1','command2','command3']
input = ['Hi','Hello','Sup','Hey']
@bot.event
async def on_message(message):
if 'John' in message:
if all(commandlist) not in message and input in message:
await message.channel.send('Hi!')
如果我说John help,机器人会发送help_message,如果我说Hi John 或Hey John,机器人会说嗨。
上面的代码有点像伪代码,所以可能有很多错误。
答案 0 :(得分:0)
您需要检查 on_message
装饰器中发送的字符串的第一个单词。
我将使用 str.split() 方法获取字符串的第一个单词以检查它是否等于 John。
@bot.event()
async def on_message(message):
x = message.split(' ', 1)[0] # This splits the first word of the string
x = "John":
while True:
try:
if commandlist in message:
await message.channel.send('Your string')
break
else:
if input in message:
await message.channel.send('Other String')
break
我希望这对您的需要有所帮助!