Discord Bot использует python, отправляя несколько ответов на одну команду - PullRequest
0 голосов
/ 15 февраля 2020

Я кодирую бота в python для разногласий, используя Atom, и всякий раз, когда я запускаю команду на своем боте (включая помощь), он отправляет несколько ответов на команду, но не все ответы одинаковы (например: s пинг будет отвечать несколько раз с разным пингом). Я думаю, что сумма, которую он посылает, является случайной, и я не уверен, что с ней вообще не так, я слышал, что циклы делают это, но у меня есть только один l oop, и это для изменения статуса. Это мой код (без токена):

import discord
import random
import os
from itertools import cycle
from discord.ext import commands, tasks

client = commands.Bot(command_prefix = 's?')
status = cycle(['s? // Senkuu by Rubix', 's?help - Made by Rubix#8166', 's? // Alpha v0.11.2, Made in Python (discord.py/atom)'])

@client.event
async def on_ready():
    change_status.start()
    print( 'Bot is ready. ')

@tasks.loop(seconds=20)
async def change_status ():
    await client.change_presence(activity=discord.Game(next(status)))

@client.command()
async def ping(ctx):
    await ctx.send(f'Pong! {round(client.latency * 1000)} ms')

@client.event
async def on_command_error(ctx, error):
    if isinstance(error,commands.MissingRequiredArgument):
        await ctx.send('Missing Requirements in Command, Try Again.')

@client.command(aliases=['8ball'])
async def _8ball(ctx, *, question):
    responses = ["It is certain.",
    "It is decidedly so.",
    "Without a doubt.",
    "Yes - definitely.",
    "You may rely on it.",
    "As I see it, yes.",
    "Most likely.",
    "Outlook good.",
    "Yes.",
    "Signs point to yes.",
    "Reply hazy, try again.",
    "Ask again later.",
    "Better not tell you now.",
    "Cannot predict now.",
    "Concentrate and ask again.",
    "Don't count on it.",
    "My reply is no.",
    "My sources say no.",
    "Outlook not so good.",
    "Very doubtful."]
    await ctx.send(f'Question: {question}\nAnswer; {random.choice(responses)}')

@client.command()
@commands.has_role('Moderator [Staff]')
async def purge(ctx, amount : int):
    await ctx.channel.purge(limit=amount)

@client.command()
@commands.has_role('Moderator [Staff]')
async def ban(ctx, member : discord.Member, *, reason=None):
    await member.ban(reason=reason)
    await ctx.send(f'Banned {member.mention}')

@client.command(pass_context=True)
@commands.has_permissions(kick_members=True)
async def kick(self, ctx, user: discord.User, *, reason):
    server = ctx.message.server
    mention = user.mention
    id = user.id
    author = str(ctx.message.author)
    x = discord.utils.get(server.channels, name="criminal-records?")
    kick_message = "**Type: Kick**\n**User:** " + user.name + "#" + user.discriminator +"(" + id + ")" \
                    + "(" + mention+")\n" \
            "**Reason:** " + reason +"\n" \
            "**Responsible Moderator: **" + author
    await self.bot.kick(user)
    await self.bot.send_message(x, kick_message)

@client.command()
@commands.has_role('Moderator [Staff]')
async def unban(ctx, *, member):
    banned_users = await ctx.guild.bans()
    member_name, member_discriminator = member.split('#')

    for ban_entry in banned_users:
        user = ban_entry.user

        if (user.name, user.discriminator) == (member_name, member_discriminator):
            await ctx.guild.unban(user)
            await ctx.send(f'Unbanned {user.mention}')
            return

@client.command()
async def load(ctx, extension):
    client.load_extension(f'cogs. {extension}')

@client.command()
async def unload(ctx, extension):
    client.unload_extension(f'cogs. {extension}')

for filename in os.listdir('./cogs'):
    if filename.endswith('.py'):
        client.load_extension(f'cogs.{filename[:-3]}')```

Вот что он делает: https://i.stack.imgur.com/9Cisk.png

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

У меня был бот, запущенный несколько раз smh (фиксированные дни go)

0 голосов
/ 16 февраля 2020

Я не вижу причин для этого oop, как это было. У вас есть какие-нибудь команды понга в каком-либо из ваших винтиков? Я исправил ваш отступ и запустил его без проблем, не столкнувшись с той же проблемой.

...