首页 > 解决方案 > 如何比较聊天中发送的两条消息?

问题描述

User 1: nuclear
User 2: reactor

我希望能够比较这两条消息;但是,我遇到了一些麻烦:我只是不知道如何将第二条消息保存到变量中。我试过使用wait_for(),不知道这是否是这样做的方式,或者我是否正确使用它。

import discord
from discord.ext import commands


class Shiritori(commands.Cog):
    """ Start a new word from the last letter of the one before. """

    def __init__(self, client):
        self.client = client

    @commands.Cog.listener()
    async def on_message(self, message):
        last_letter = message.content[-1]
        print(f"The first letter is {message.content[0]}")

        msg = await self.client.wait_for('message')
        print(f"The last letter is {msg}")

        if message.content[0] != msg[-1]:
            await message.delete()


def setup(client):
    client.add_cog(Shiritori(client))

我的计划是保存用户 1 单词的最后一个字母,并将其与用户 2 单词的第一个字母进行比较,如果不匹配,则删除用户 2 的消息。

标签: pythonpython-3.xdiscord.py

解决方案


我希望我能正确理解这个问题。无需使用即可克服此问题的一种方法wait_for是利用类的属性:

class Shiritori(commands.Cog):
    """ Start a new word from the last letter of the one before. """

    def __init__(self, client):
        self.client = client
        self.lastletter = "a" # keeps track of the recent last letter here

    @commands.Cog.listener()
    async def on_message(self, message):
        firstletter = message.content[0]
        if firstletter.lower() == self.lastletter.lower():
            self.lastletter = message.content[-1]
            print(f"The new letter to start the word with is {self.lastletter}")
        else:
            await message.delete()

此外,您可以添加检查以仅在特定渠道/特定用户等中发生这种情况。


推荐阅读