When outputting text with bot, if you delete the previous post and post a new one, It is convenient because it is displayed as the latest posted message.
However, if the post is made in a short time, the post may be displayed twice.
It's basically a multi-threaded locking process, It's working fine so far, so I'll leave the source.
class RenewalMessage():
def __init__(self, channel):
self.lastmessage = None
self.outputlock = 0
self.channel = channel
async def SendMessage(self, message):
if self.outputlock == 1: return
try:
while self.outputlock != 0:
await asyncio.sleep(1)
if self.lastmessage is not None:
self.outputlock = 1
try:
await self.lastmessage.delete()
except discord.errors.NotFound:
pass
self.lastmessage = None
try:
self.outputlock = 2
self.lastmessage = await self.channel.send(message)
except discord.errors.Forbidden:
pass
finally:
self.outputlock = 0