discord.py发送漫游器消息,然后固定(重写)

时间:2019-03-12 22:10:09

标签: python discord.py-rewrite

所以我在猜数字机器人。我希望僵尸程序在猜出数字时发送,然后固定僵尸程序发送的消息。我该怎么办?

@client.event
async def on_message(message):
    if message.content == str(number) and message.channel.id == 555146955815256065:
        author = message.author.id
        await message.channel.send("Congratulations <@" + str(author) + ">! You guessed the number, `" + str(number) + "`!")
        await message.pin()

我已经做到了,这将固定用户发送的消息,而不是机器人消息,

感谢您的帮助,谢谢!

3 个答案:

答案 0 :(得分:1)

在您的原始代码中,您引用的不是机器人发送的消息,而是用户发送的消息,因此很明显,用户消息将被固定。

要修复此问题,您还需要捕获机器人发送的消息。

所以您可以这样做:

@client.event
async def on_message(message):
    if message.content == str(number) and message.channel.id == 555146955815256065:
        author = message.author.id
        await message.channel.send("Congratulations <@" + str(author) + ">! You guessed the number, `" + str(number) + "`!")
    if message.id== botid and message.channel.id == 555146955815256065:
        await message.pin()

如果在捕获正确的消息时遇到问题,您也可以在其上放置过滤器,以检查它是否使用正则表达式以"Congratulations"开头。

答案 1 :(得分:0)

使用第一个if语句,以使消息不会循环

@bot.event
async def on_message(msg):
    if msg.author.id != bot.user.id:
        message=await msg.channel.send("You guessed it")
        await message.pin() #Pins the message the bot sent
        await msg.pin() #Pins the message the user sent

答案 2 :(得分:0)

您必须定义机器人发送的消息(例如此处为 botmsg)并将其固定。否则,它会固定 on_message(message) 中定义的消息,关于机器人反应的消息是什么。

此外,我对消息本身进行了过度处理,因此提及用户并插入数字要容易得多(您也可以将其作为整数来执行,但字符串也可以)。

@client.event
async def on_message(message):
    if message.content == str(number) and message.channel.id == 555146955815256065:
        botmsg = await message.channel.send(f"Congratulations {message.author.mention}! You guessed the number, `{number}`!")
        await botmsg.pin()