Задать вопрос
  • Как сделать команду tempmute discord.py?

    x4zx
    @x4zx
    python developer
    Сперва советую ознакомиться с более новой версией библиотеки на которой пишите и понять что pass_context=True, уже давно не используются.

    Во-вторых: если вы хотите выдавать мут на какое-то количество времени, то необходимо использовать базу данных и различные циклы чтобы через заданное время бот снял мут. Как минимум в функции должно быть не time=0, a time: int = None

    К вашему счастью разработчики Discord сделали всё за вас и теперь можно написать подобную функцию очень быстро.
    Возьмите этот видеоролик за пример, даже без знания английского там все очень понятно при просмотре - https://youtu.be/W2TcxVNctw8
    Ответ написан
    Комментировать
  • Как сделать tempmute или мут на некоторое время?

    retUrn3d
    @retUrn3d
    Пользователь, просто пользователь...
    Это плохой вариант использования, но без лишних затрат.
    Если бот будет перезагружен, во время того как у человека висит "мут". То он с ним навсегда и останется.
    @client.command(pass_context=True)
    @commands.has_any_role(860824791610032189, 876086379665301534)
    
    async def mute( ctx, member: discord.Member, time: int):
        emb = discord.Embed(title="Участник Был Замучен!", colour=discord.Color.blue())
        await ctx.channel.purge(limit=1)
    
        emb.set_author(name=member.name, icon_url=member.avatar_url )
        emb.set_footer(text="Его замутил {}".format(ctx.author.name ), icon_url=ctx.author.avatar_url )
        
        await ctx.send(embed=emb)
        muted_role = discord.utils.get(ctx.message.guild.roles, name="Muted")
        await member.add_roles(muted_role)
        
        # Спим X секунд, перед тем как снять роль.
        await asyncio.sleep(time) 
        # Снимаем роль замученного.
        await member.remove_roles(muted_role)
    Ответ написан
    Комментировать
  • Как сделать так чтобы бот упоминал пользователя который написал ему команду(в группе)?

    @szjyakgf
    Если просто юзер то:username = message.from_user.username
    А если упоминать например по нику то:
    user_id = message.from_user.id
    full_name = message.from_user.full_name
    mention = "["+full_name+"](tg://user?id="+str(user_id)+")"
    #и не забудь про parse_mode="Markdown"
    Ответ написан
    1 комментарий
  • Как сделать так чтобы бот упоминал пользователя который написал ему команду(в группе)?

    xenon
    @xenon
    Too drunk to fsck
    В моем случае, в моем боте, с той либой, которую я использую:

    tgname = message.from_user.username

    Чтоб можно было ответить конкретнее - надо знать, какая библиотека для телеграм-бота используется.
    Но универсальный ответ - смотрите все доступные в коде данные (параметр message обычно), и печатаете его на консоль или делаете dir(message) и увидите имеющиеся поля. Что-то из них наверняка будет тем, что нужно.
    Ответ написан
    Комментировать
  • Как сделать чтобы бот удалял определённое сообщение в группе?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Вызываете метод https://core.telegram.org/bots/api#deletemessage
    Передав в него нужные параметры (id чата и id сообщения), *бот удаляет*
    Ответ написан
    Комментировать
  • Как сделать чтобы бот удалял определённое сообщение в группе?

    @Kvason
    Веб-разработчик
    words = message.text.split()
    for w in words:
        if(w=='попа'):
            bot.delete_message(message.chat.id, message.message_id)
            break
    Ответ написан
    Комментировать
  • Какая библиотека для создания telegram бота на Python лучше и удобнее?

    • Если ожидается большой проект с высокой посещаемостью и долгой поддержкой то у aiogram нет альтернативы. У них беда с документацией, но есть чат в TG где всегда подскажут. Там можно пообщаться и с разработчиком данной библиотеки.
    • Если это что-то простое на десяток хэндлеров и лень долго разбираться то у python-telegram-bot очень подробные wiki, документация, снипеты. Можно без опыта очень быстро разобраться... в асинхронность тоже умеет простым декоратором @run_async, можно даже запустить serverless на какой нить azure/google/aws/yandex functions с бесплатным лимитом в 1000000(azure) обращений за месяц
    • Если ограничения bot api слишком тесные и вы хотите делать то что может только клиент (например выгружать файлы больше 40Мб), то посмотрите в сторону telethon (тоже async) плюс он общается с серверам телеграма не через request-respons, а по протоколу MTProto. В частности можете посмотреть на Garnet — bot-friendly telethon
    Ответ написан
    1 комментарий