Ответы пользователя по тегу Python
  • Как открывать и закрывать порты через Python?

    Amoralny
    @Amoralny
    Python-разработчик
    В модуле import os есть метод system(), который отправляет команды в shell.

    import os
    
    request = ('...') # здесь код для открытия или закрытия портов
    code = os.system(request)
    
    print(code) # если выводит 0 - то успешно

    Ещё можно взять subprocess, а именно,- метод call(request, shell=True)
    Ответ написан
    Комментировать
  • Как сделать так, чтобы telegram bot принимал только целочисленные сообщения?

    Amoralny
    @Amoralny
    Python-разработчик
    Вот так можно:
    bot.message_handler(content_types=['text'])
    def reg_age(message):
      age = message.text
      if age.isdigit():
        age = int(age) # свернём в int, тк хвост из левых чисел нам не нужен
        bot.send_message(message.chat.id, f"Хорошо тебе! {age} лет") #берём "f" чтобы все встало само,  без перегона в srt 
        bot.register_next_step_handler(message, next_step) # указывай какая функция будет обрабатывать следующее сообщение пользователя
      else:
        bot.send_message (message.chat.id, "Возраст это число, а не текст! ")
        bot.register_next_step_handler(message, reg_age) # Следущее сообщение пользователя считает функция reg_age


    str.isdigit() #проверяет - является ли строка числом

    ps. код взять от человека, ответившего выше, я доработал :D
    Ответ написан
  • Почему бот не удаляет приватный канал после его создания?

    Amoralny
    @Amoralny
    Python-разработчик
    Можно попробовать так, не идеально, нужно доработать

    category_id = 778594516856733696 # id категории
    make_channel_id = 'id' # id канала, для создания временных каналов
    temp = []
    
    @bot.event
    async def on_voice_state_update(member, before, after):
        if after.channel:
            if after.channel.id == make_channel_id:
                guild = member.guild # достём guild
    
                # достаём категорию, здесь нужно исправить, но я не помню что и как
                # по итогу здесь должен быть объект категории
                category = discord.utils.get(guild.categories, id=category_id)
    
                # создаём канал в категории
                created_channel = await guild.create_voice_channel(
                    f'╠╣{member.display_name}',
                    position=3,
                    category=category,
                    bitrate=96000
                )
    
                # устанавливаем права
                await created_channel.set_permissions(member, connect=True, mute_members=True, move_members=True, manage_channels=True)
                # двигаем пользователя в канал
                await member.move_to(created_channel)
                # чтобы ничего не ждать, сохраняем id канала
                temp.append(created_channel.id)
    
        # алгоритм удаления
        elif before.channel:
            # проверяем id в списке
            if before.channel.id in temp:
                # если нет пользователей - удаляем
                if not before.channel.members:
                    return await before.channel.delete()


    Косяки, которые есть в этом коде:
    - Если в войсе бот, то войс не будет удален, пока бот не выйдет
    - Если овнер выйдеи, то войс останется

    Как вариант - можно просто взять объект категории и создать через него

    category.create_voice_channel(data)
    Ответ написан
    Комментировать
  • Как транслировать музыку со стрима?

    Amoralny
    @Amoralny
    Python-разработчик
    Для проигрывания музыки можно использовать Lavalink.
    КЛАЦ

    Там есть пример простого бота.
    Ответ написан
    Комментировать
  • Как настроить взаимодействие между telebot и telethon скриптами?

    Amoralny
    @Amoralny
    Python-разработчик
    Ну, если я правильно понял, то алгоритм может быть таким:

    1. Бот принимает сообщения от Y и отправляет его пользователю на telehon (должен принимать сообщения только от бота на telebot)
    2. Пользователь отправляет его X, если нужно получить только один ответ - реализуй минимальный кэш, с сохранением id получателя и убирай его, когда получишь ответ.
    3. Полученный ответ отправляется обратно боту на telebot и пересылается Y

    Костыльно, но, как я считаю, - более простой метод, нежели IPC
    Ответ написан
    2 комментария