Skip to main content

Библиотека для удобного и многофункционального(в будущем) использования.

Project description

Установить:

pip install EasyGram

Быстрый старт

Эхо бот(синхронный)

from EasyGram import SyncBot, types

bot = SyncBot('Token here')

@bot.message(content_types='text')
def echo_bot(message: types.Message):
	message.answer(message.text)

bot.polling()

Эхо бот(асинхронный)

from EasyGram.Async import AsyncBot, types

bot = AsyncBot('Token here')

@bot.message(content_types='text')
async def echo_bot(message: types.Message):
	await message.answer(message.text)

bot.executor()

Бот рандомайзер(синхронный):

from EasyGram import SyncBot, types
from random import randint

bot = SyncBot('Token here')

@bot.message(commands='start')
def start(message: types.Message):
	#Делаем маленькую кнопку
	button = types.ReplyKeyboardMarkup(resize_keyboard=True)
	button.add('От 1 до 10')
	
	message.answer('Привет!', reply_markup=button)

@bot.message(lambda message: message.text == 'От 1 до 10')
def random_number(message: types.Message):
	message.answer(f'Тебе выпало: {randint(1, 10)}!')

bot.polling()

Бот рандомайзер(асинхронный)

from EasyGram.Async import AsyncBot, types
from random import randint

bot = AsyncBot('Token here')

@bot.message(commands='start')
async def start(message: types.Message):
	#Делаем маленькую кнопку
	button = types.ReplyKeyboardMarkup(resize_keyboard=True)
	button.add('От 1 до 10')
	
	await message.answer('Привет!', reply_markup=button)

@bot.message(lambda message: message.text == 'От 1 до 10')
async def random_number(message: types.Message):
	await message.answer(f'Тебе выпало: {randint(1, 10)}!')

bot.executor()

Что нового?

С новой версии 0.0.2 добавилось:

  • В SyncBot и AsyncBot добавлена возможность запускать ботов с многопоточностью, дабы придать больше скорости вашему боту!

Чтобы сделать это в SyncBot требуется указать параметр threaded_run=True.

Пример:

from EasyGram import SyncBot

bot = SyncBot('Token')

#... Остальной код

bot.polling(threaded_run=True)

С AsyncBot тоже нужно указать параметр threaded_run=True в executor() или polling().

Пример:

from EasyGram.Async import AsyncBot

bot = AsyncBot('Token')

#... Остальной код

bot.executor(threaded_run=True)

По желанию можно установить параметр thread_max_works=15.Это максимальное кол-во потоков которое можно использовать.

[!WARNING] Не ставить много, иначе может быть будет сильная нагрузка на процессор!

  • Теперь можно добавить команды в панель команд(лист с командами, менюшка команд, как угодно) с помощью set_my_commands()

Пример:

from EasyGram.Async import AsyncBot, types

bot = AsyncBot('Token')

commands = [
    types.BotCommand(command='start', description='Run bot'),
    types.BotCommand(command='help', description='help')
]

bot.set_my_commands(commands, scope=types.BotCommandScopeAllGroupChats()) #scope по желанию

Тоже самое и с SyncBot

Пример:

from EasyGram import SyncBot, types

bot = SyncBot('Token')

commands = [
    types.BotCommand(command='start', description='Run bot')
]

bot.set_my_commands(commands, scope=types.BotCommandScopeAllGroupChats()) #scope по желанию
  • Появились два метода в объекте InlineKeyboardMarkup: add_tostorage() и add_keyboards().

Первый add_tostorage(*args: types.InlineKeyboardButton) добавляет объекты в список types.InlineKeyboardMarkup.storage, а второй types.InlineKeyboardMarkup.add_keyboards() в один ряд добавляет кнопки.

  • Добавлен метод удаления сообщения.

Пример:

С SyncBot

from EasyGram import SyncBot, types

bot = SyncBot('Token here')

#... остальной код

@bot.message()
def messages(message: types.Message):
    bot.delete_message(message.chat.id, message.message_id-1) #Удаления предыдущего сообщения
    message.delete() #Удаления этого сообщения, т.е от пользователя

#Удаления в CallbackQuery
@bot.callback_query()
def call(call: types.CallbackQuery):
    bot.delete_message(call.chat.id, call.message.message_id-1)
    call.message.delete() # Удаления сообщения куда пользовать нажал на кнопку
    
bot.polling()

С AsyncBot

from EasyGram.Async import AsyncBot, types

bot = AsyncBot('Token here')

#... остальной код

@bot.message()
async def messages(message: types.Message):
    await bot.delete_message(message.chat.id, message.message_id-1) #Удаления предыдущего сообщения
    await message.delete() #Удаления этого сообщения, т.е от пользователя

#Удаления в CallbackQuery
@bot.callback_query()
async def call(call: types.CallbackQuery):
    await bot.delete_message(call.chat.id, call.message.message_id-1)
    await call.message.delete() # Удаления сообщения куда пользовать нажал на кнопку

bot.executor()
  • Добавлен метод редактирования сообщения.

Пример:

С SyncBot

from EasyGram import SyncBot, types
from time import sleep

bot = SyncBot('Token here')

#... остальной код

@bot.message()
def message(message: types.Message):
    msg: types.Message = message.answer('Привет')
    sleep(10)# !!!!!Работает корректно только если в bot.polling() установлен параметр threaded_run=True
    msg.edit('Как дела?')

bot.polling(threaded_run=True)

С AsyncBot

from EasyGram.Async import AsyncBot, types
from asyncio import sleep

bot = AsyncBot('Token here')

#... остальной код

@bot.message()
async def message(message: types.Message):
    msg: types.Message = await message.answer('Привет')
    await sleep(10)
    await msg.edit('Как дела?')

bot.executor()
  • Добавлен метод отправления опроса.

Пример:

С SyncBot

from EasyGram import SyncBot, types
from time import sleep

bot = SyncBot('Token here')

#... остальной код

@bot.message()
def message(message: types.Message):
    message.send_poll('Как дела?', [types.InputPollOption('<b>Отлично</b>', text_parse_mode='html'), types.InputPollOption('Плохо')])
    bot.send_poll(message.from_user.id, 'Как дела?', [types.InputPollOption('<b>Отлично</b>', text_parse_mode='html'), types.InputPollOption('Плохо')])

bot.polling()

С AsyncBot

from EasyGram.Async import AsyncBot, types
from asyncio import sleep

bot = AsyncBot('Token here')

#... остальной код

@bot.message()
async def message(message: types.Message):
    await message.send_poll('Как дела?', [types.InputPollOption('<b>Отлично</b>', text_parse_mode='html'), types.InputPollOption('Плохо')])
    await bot.send_poll(message.from_user.id, 'Как дела?', [types.InputPollOption('<b>Отлично</b>', text_parse_mode='html'), types.InputPollOption('Плохо')])

bot.executor()

В объекте ParseMode добавлены методы для форматирования текста

from EasyGram.types import ParseMode

print(ParseMode.hbold('test')) # <b>test</b>
print(ParseMode.hitalic('test')) # <i>test</i>
print(ParseMode.hstrikeline('test')) # <s>test</s>
print(ParseMode.hunderline('test')) # <u>test</u>
print(ParseMode.hblockquote('test')) # <blockquote>test</blockquote>
print(ParseMode.hcode('test')) # <code>test</code>
print(ParseMode.hprecode(lang='python', text='test')) # <pre><code class="python">test</code></pre>
  • Добавлен метод next_step_handler().С помощью него можно вызвать функцию как только пользователь отправит сообщение.

Пример:

С SyncBot

from EasyGram import SyncBot, types

bot = SyncBot('Token here')

@bot.message(commands='start')
def start(message: types.Message):
    message.reply('Привет, введи своё имя.')
    bot.next_step_handler(message.chat.id, nexts) #Ожидания сообщения от пользователя
def nexts(message: types.Message):
    message.answer(f'Приятно познакомиться {message.text}')

bot.polling()

С AsyncBot

from EasyGram.Async import AsyncBot, types

bot = AsyncBot('Token here')

@bot.message(commands='start')
async def start(message: types.Message):
    await message.answer('Привет, введи своё имя.')
    await bot.next_step_handler(message.chat.id, nexts) #Ожидания сообщения от пользователя
async def nexts(message: types.Message):
    await message.answer(f'Приятно познакомиться {message.text}')

bot.executor()
  • Добавлены новые методы в SyncBot/AsyncBot:
  1. delete_message()
  2. edit_message_text()
  3. send_poll()
  4. send_audio()
  5. send_documen()
  6. send_animation()
  7. send_voice()
  8. send_video()
  9. send_video_note()
  10. send_paid_media()
  11. send_contact()
  12. send_dice()
  13. send_chat_action()
  • Добавлены дополнительные методы к классу Message:
  1. types.Message.delete()
  2. types.Message.edit()
  3. types.Message.reply()
  4. types.Message.send_poll()
  5. types.Message.send_audio()
  6. types.Message.send_document()
  7. types.Message.send_animation()
  8. types.Message.send_voice()
  9. types.Message.send_video()
  10. types.Message.send_video_note()
  11. types.Message.send_paid_media()
  12. types.Message.send_contact()
  13. types.Message.send_dice()
  14. types.Message.send_chat_action()

Что добавить ещё?

Связаться:

  • 📞💌Telegram channel: Channel

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easygram-0.0.3b1.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

EasyGram-0.0.3b1-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file easygram-0.0.3b1.tar.gz.

File metadata

  • Download URL: easygram-0.0.3b1.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.0

File hashes

Hashes for easygram-0.0.3b1.tar.gz
Algorithm Hash digest
SHA256 33faa1cd3e8ab8f7aec586da8f9aeb85611de6af48a6df04494cf15b6f6890b1
MD5 dc86fd0cc106c0a58e268b6513815da5
BLAKE2b-256 a9cabf3ac25b9a848ddc5b55628998a7bb360622c33609a9f91ceed5d77c2f28

See more details on using hashes here.

File details

Details for the file EasyGram-0.0.3b1-py3-none-any.whl.

File metadata

  • Download URL: EasyGram-0.0.3b1-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.0

File hashes

Hashes for EasyGram-0.0.3b1-py3-none-any.whl
Algorithm Hash digest
SHA256 74ebea610ded23336fbfc2678e84e39e2bae069c68a56e7b8bac63929a96657e
MD5 b1d359145409cab1448d5d4e25086910
BLAKE2b-256 4ec81bcb2a34f525cb4b63853cc4982400a4ac6ed06701356b8c870d1d17bd36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page