@Rektar01

Как заставить 2 файла работать вместе?

Здравствуйте, вот такая проблема, имеется 3 файла. Есть основной файл в котором хранятся команды для бота, есть отдельный файл под систему ролей, которая бы добавляла участнику сервера роль при добавлении реакции, по отдельности код работает, но если запустить все с основного файла, все равно работает только файл по ролям. Я пытался совместить 2 файла в один, результат тот же. Как мне решить эту проблему? Желательно что бы основной кол и код с ролями были в отдельных файлах.
kendra_main:
import discord
from discord.ext import commands
from discord import utils

import cfg
import economy
import roles

@cfg.bot.command(pass_context=True) #буквально для создания команды, в скобках параметры
async def РаботаЛитон(ctx):  # создаем асинхронную фунцию бота зароботка обычного работяги
    economy.Liton.LitonBalance = economy.SalaryForWorker + economy.Liton.LitonBalance #считаем баланс
    arg = str(economy.Liton.LitonBalance) #превращает число в текст
    await ctx.send('Ты заработал денег, баланс твоего Литона : ' + arg + ' тугриков.')  # отправляем в чат ответ

@cfg.bot.command(pass_context=True)
async def РаботаКендра(ctx):  # создаем асинхронную фунцию бота зароботка обычного работяги
    economy.Kendra.KendraBalance = economy.SalaryForWorker + economy.Kendra.KendraBalance #считаем баланс
    arg = str(economy.Kendra.KendraBalance) #превращает число в текст
    await ctx.send('Ты заработал денег, баланс твоей Кендры : ' + arg + ' тугриков.')  # отправляем в чат ответ

roles.client.run(cfg.TOKEN)

cfg.bot.run(cfg.TOKEN) #запуск бота

cfg:
import discord
from discord.ext import commands
from discord import utils

bot = commands.Bot(command_prefix='!') #вот это префикс бота
TOKEN = '***'

POST_ID = 754075723219861594 #вот это  код поста
MAX_ROLES_PER_USER = 3 #вот это макс количество ролей
ROLES = {
    '':754037719956455475, #Кендра
    '':754038164175454278, #Литон
}
EXCROLES = () #исключения

roles:
import discord
from discord import utils

import cfg

#Эта гипербола отвечает за выдачу ролей
class MyClient(discord.Client):
    async def on_ready(self):
        print('Logged on as {0}!'.format(self.user))

    async def on_raw_reaction_add(self, payload):
        if payload.message_id == cfg.POST_ID:
            channel = self.get_channel(payload.channel_id)  # получаем объект канала
            message = await channel.fetch_message(payload.message_id)  # получаем объект сообщения
            member = utils.get(message.guild.members,
                               id=payload.user_id)  # получаем объект пользователя который поставил реакцию
            try:
                emoji = str(payload.emoji)  # эмоджик который выбрал юзер
                role = utils.get(message.guild.roles, id=cfg.ROLES[emoji])  # объект выбранной роли (если есть)

                if (len([i for i in member.roles if i.id not in cfg.EXCROLES]) <= cfg.MAX_ROLES_PER_USER):
                    await member.add_roles(role)
                    print('[SUCCESS] User {0.display_name} has been granted with role {1.name}'.format(member, role))

                else:
                    await message.remove_reaction(payload.emoji, member)
                    print('[ERROR] Too many roles for user {0.display_name}'.format(member))


            except KeyError as e:
                print('[ERROR] KeyError, no role found for ' + emoji)
            except Exception as e:
                print(repr(e))

client = MyClient()
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
@killeryStark
посмотрите в документации discord.py о cogs. команды можно модулями создавать, подключать и отключать нужные без перезагрузки скрипта итд
Ответ написан
@mrxor
Simple is better than complex
У вас управление не доходит до cfg.bot.run(cfg.TOKEN), используйте asyncio.gather для запуска обеих задач.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
28 сент. 2020, в 00:10
15000 руб./за проект
27 сент. 2020, в 21:54
15000 руб./за проект