06
Май
2020

Не понимаю почему не работает дискорд бот

Соединил несколько кодов из интернета в один для своего дискорд бота, из всех функций (Табличка с информацией, игровой статус, сообщение при входе, радужная роль, работает только радужная роль. Ошибок никаких не вылазит, не понимаю что нужно изменить.

import discord
from discord import utils
from discord.ext import commands
import asyncio
import random
import os

token = 'token'
serverid = id

client = commands.Bot( command_prefix = '.')
client.remove_command( 'help' )
PREFIX = "."

# Табличка с информацией

@client.command()
async def info(ctx):
    print('Табличка с инфой работает')
    embed=discord.Embed(title="ПИ-БОТ", description="Бот для ПИ-18(9)", color=0x0080ff)

    embed.add_field(name="Cоздатель:", value="name", inline=True)
    embed.add_field(name="Версия:", value="1", inline=True)
    embed.set_thumbnail(url = 'url')
    embed.set_footer(text="Бот")

    await ctx.send(embed=embed)

# Игровой статус

@client.event
async def ready():
    print( 'Игровой статус работает' )
    await client.change_presence( status = discord.Status.online, activity = discord.Game( 'game'  ) )

#Сообщение о том, что Юзер зашёл на сервер + выдача роли
@client.event
async def on_member_join( member ):
    print('Приветственное сообщение работает')
    emb = discord.Embed( description = f"**{member.mention}** зашел на сервер, добро пожаловать!", color = 0x0c0c0c )
    role = discord.utils.get( member.guild.roles, id = id ) # Айди роли, которая будет выдаваться, когда человек зашёл на сервер

    await member.add_roles( role )
    channel = client.get_channel( id ) # Айди канала, куда будет писаться сообщение
    await channel.send( embed = emb ) 

# Радужная роль

client = discord.Client()
colours = [discord.Color.dark_orange(),discord.Color.orange(),discord.Color.dark_gold(),discord.Color.gold(),discord.Color.dark_magenta(),discord.Color.magenta(),discord.Color.red(),discord.Color.dark_red(),discord.Color.blue(),discord.Color.dark_blue(),discord.Color.teal(),discord.Color.dark_teal(),discord.Color.green(),discord.Color.dark_green(),discord.Color.purple(),discord.Color.dark_purple()]
rainbowrolename = "name"
delay = 5

@client.event
async def rainbowrole(role):
    for role in client.get_guild(serverid).roles:
        if str(role) == str(rainbowrolename):
            while not client.is_closed():
                try:
                    await role.edit(color=random.choice(colours))
                except Exception:
                    print("can't edit role, make sure the bot role is above the rainbow role and that is have the perms to edit roles")
                    pass
                await asyncio.sleep(delay)
    print('role with the name "' + rainbowrolename +'" not found')
    print("creating the role...")
    try:
        await client.get_guild(serverid).create_role(reason="Created rainbow role", name=rainbowrolename)
        print("role created!")
        await asyncio.sleep(2)
        client.loop.create_task(rainbowrole(rainbowrolename))
    except Exception as e:
        print("couldn't create the role. Make sure the bot have the perms to edit roles")
        print(e)
        pass
        await asyncio.sleep(10)
        client.loop.create_task(rainbowrole(rainbowrolename))  

@client.event
async def on_ready():
    client.loop.create_task(rainbowrole(rainbowrolename))
    print('Радужная роль работает')     

client.run(token)

Источник: https://ru.stackoverflow.com/questions/1121488/%D0%9D%D0%B5-%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D1%8E-%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82-%D0%B4%D0%B8%D1%81%D0%BA%D0%BE%D1%80%D0%B4-%D0%B1%D0%BE%D1%82

Share

Тебе может это понравится...