使用 Python Discord 机器人删除消息?
问题描述
我正在尝试制作一个 Python Discord Bot,它首先可以删除频道中的消息.我希望它以终结者 3 为主题,所以它会从用户说天网开始,然后机器人要求激活 Y 或 N?当用户输入Y时,它会删除频道中的所有消息,如果用户输入N,它会说审判日是不可避免的.任何帮助将不胜感激.
I'm trying to make a Python Discord Bot that firstly can delete messages within a channel. I wanted it to be Terminator 3 themed so it would start out by the user saying Skynet then the bot asks to activate Y or N? and when the user types Y it would delete all the messages in the channel if the user typed N it would say judgment day is inevitable. any help would be greatly appreciated.
import discord
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
token = 'Token'
Client = discord.Client()
client = commands.Bot(command_prefix = '!')
@client.event
async def on_ready():
print("Skynet Online")
@client.event
async def on_message(message):
if message.content == 'skynet':
await client.send_message(message.channel, 'Execute Y/N?')
@asyncio.coroutine
async def delete_messages(messages):
if message.content == 'Y':
await client.delete_messages()
client.run('Token')
解决方案
import discord
from discord.ext.commands import Bot
from discord.ext import commands
import asyncio
@has_permissions(manage_messages=True, read_message_history=True)
@bot_has_permissions(manage_messages=True, read_message_history=True)
async def purge(ctx, limit: int = 100, user: d.Member = None, *, matches: str = None):
"""Purge all messages, optionally from ``user``
or contains ``matches``."""
logger.info('purge', extra={'ctx': ctx})
def check_msg(msg):
if msg.id == ctx.message.id:
return True
if user is not None:
if msg.author.id != user.id:
return False
if matches is not None:
if matches not in msg.content:
return False
return True
deleted = await ctx.channel.purge(limit=limit, check=check_msg)
msg = await ctx.send(i18n(ctx, 'purge', len(deleted)))
await a.sleep(2)
await msg.delete()
即删除消息的命令
相关文章