这是给不和谐的顺便说一句,不是重写。我尝试了每种方法来定义消息。我什至走得太远,不得不重新安装discord.py。我一直在努力解决这个问题一周。我在网上找不到任何信息。我的问题是,当我不在不和谐的频道中并编写“!solodab”(我编写代码时使命令更有趣,我将它们重命名为已完成的代码)而您不在频道中时,它将说“您不在频道中加入一个”,但我不能只删除一条消息。我必须使用
删除至少两条消息 async for message in client.logs_from(channel, limit=int(2):
message.append(message)
await client.delete_messages(messages)
我尝试从邮件中删除。但是没有运气,我已经读了官方文档,我只需要写
await client.delete_message(message)
但是当我这样做时,我得到的只是:discord.ext.commands.errors.CommandInvokeError:命令引发了一个异常:NameError:未定义名称'message'
这是此问题的相关代码,如果您需要我发送整个文件,请告诉我。对于那些可以帮助我解决这个问题的人,我将永远负债累累。
bot_prefix = "!"
crew_role = '415914560420315137'
client = Bot(command_prefix=bot_prefix)
client.command(pass_context=True)
async def solodab(context, voice_channel: discord.Channel = None):
server = context.message.server
author = context.message.author
if voice_channel == None:
voice_channel = author.voice.voice_channel
else:
try:
vc = await client.join_voice_channel(voice_channel)
await client.say("Håper alle er klare! Nedtelling starter snart, lurer du på noe angående denne kommandoen og hva den gjør. Skriv '!help solodab'\nEller kontakt en i crewet(!crew, for en liste av alle i crewet)")
# create StreamPlayer
time.sleep(1)
player = vc.create_ffmpeg_player('dabb.mp3')
player.start()
# disconnect after the player has finished
print("6 sek til figger's dabber ")
time.sleep(6)
player.stop()
await vc.disconnect()
channel = context.message.channel
messages = []
#async for message in client.logs_from(channel, limit=int(2)):
# messages.append(message)
#await client.delete_messages(messages)
await client.say("Queuen har nå startet, skriv de tre siste tallene av server id'n så kan du se hvem som er i samme game som deg!")
time.sleep(2)
await client.delete_message(message)
except:
channel = context.message.channel
#async for message in client.logs_from(channel, limit=int(2)):
# messages.append(message)
#await client.delete_messages(messages)
await client.say("Du er ikke i en kanal, join en!" + author.mention)
time.sleep(1)
await client.delete_message(message.channel)
await vc.disconnect()
答案 0 :(得分:0)
就像帕特里克(Patrick)在评论中提到的那样,尽管有想法,但您没有定义/创建消息。
您可以执行await client.delete_message(context.message)
来删除发送到漫游器的消息。
(尽管如果我错了,任何人都可以纠正我,因为我认为context
是Message对象本身。)
如果要删除多封邮件,则必须先提取多封邮件,但我未能在文档中找到有关如何提取多封邮件的任何信息。
虽然我发现有用的是purge_from函数调用。
(Ctrl + F
搜索它,如果它不能将您重定向到该函数)
因此,与其提取多个消息并将其删除,不如使用
await client.purge_from(TargetChannel, NoOfMessagesToDelete)
您的TargetChannel
最有可能是context.channel
,并且NoOfMessagesToDelete
介于0到100之间的任何数字。
(与往常一样,请先尝试检查权限,然后再尝试删除它们:v。)