from pyrogram import Client
from pyrogram.errors import FloodWait
import asyncio
async def get_post_stats(client: Client, channel_id: int, message_id: int):
"""
Получает статистику поста: просмотры, реакции и количество комментариев.
Args:
client: Экземпляр клиента Pyrogram
channel_id: ID канала
message_id: ID сообщения
Returns:
dict: Словарь со статистикой
"""
try:
# Получаем сообщение
message = await client.get_messages(channel_id, message_id, replies=-1)
# Получаем статистику просмотров
views = message.views if message.views else 0
# Получаем реакции
reactions = {}
if message.reactions:
for reaction in message.reactions.reactions:
reaction_id = reaction.custom_emoji_id if reaction.custom_emoji_id else reaction.emoji
reactions[reaction_id] = reaction.count
comments_count = await client.get_discussion_replies_count(channel_id, message_id)
stats = {
"views": views,
"reactions": reactions,
"forwards": message.forwards or 0,
"comments": comments_count
}
return stats
except FloodWait as e:
print(f"Превышен лимит запросов, ждем {e.value} секунд")
await asyncio.sleep(e.value)
return await get_post_stats(client, channel_id, message_id)
except Exception as e:
print(f"Произошла ошибка: {e}")
return None
# Пример использования
async def main():
# Замените на свои данные
api_id = "0"
api_hash = "0"
channel_id = -1 # ID канала
message_id = 1 # ID сообщения
async with Client("my_account", api_id=api_id, api_hash=api_hash) as app:
stats = await get_post_stats(app, channel_id, message_id)
if stats:
print(f"Просмотры: {stats['views']}")
print(f"Переслали: {stats['forwards']}")
print(f"Реакции: {stats['reactions']}")
print(f"Комментарии: {stats['comments']}")
if __name__ == "__main__":
asyncio.run(main())
Просмотры: 1
Реакции: {'': 1, '❤': 1}
Комментарии: 1
aiogram==2.25.1
и aiohttp>=3.8.0,<3.9.0
указывают, что они поддерживаются максимально до Python 3.10.keyboard_bar_inline_tarif_buy_status
у вас глобальная переменная@dp.message_handler(lambda message: message.text == ' Мои покупки')
async def buy_status(message : types.Message):
await bot.send_message(message.from_user.id, f' Ваши купленные паки:', reply_markup=keyboard_bar_inline_tarif_buy_status(), parse_mode='Markdown')
def keyboard_bar_inline_tarif_buy_status():
kb = InlineKeyboardMarkup(row_width=1)
for i in range(1, 7):
cur.execute(f'SELECT TARIF{i} FROM users')
data_total = cur.fetchone()
if data_total[0] == 'PAID':
kb.add(InlineKeyboardButton(text=f'{i}', callback_data=f'pay{i}'))
return kb
await state.finish()
await state.set_state(reg.name)
from aiogram.contrib.fsm_storage.memory import MemoryStorage
storage = MemoryStorage()
from aiogram.dispatcher import FSMContext
@dp.message_handler(commands=['start'])
async def start(message: types.Message, state=FSMContext):
await message.answer('Вы ввели команду /start, введите команду /stop или /cancel чтобы выйти из меню')
await state.set_state(YourState.name_state)
@dp.message_handler(commands=['stop'], state=YourState.name_state)
async def stop(message: types.Message, state=FSMContext):
await message.answer('Вы ввели команду /stop')
await state.finish()
@dp.message_handler(commands=['cancel'], state='*')
async def cancel(message: types.Message, state=FSMContext):
current_state = await state.get_state()
if current_state is None:
return
await state.finish()
await message.answer('Вы ввели команду /cancel')
photo_data = await db.get_file_info(f'{files_dir}file_name.png')
if photo_data is None:
media = types.InputFile(f'{files_dir}file_name.png')
msg = await dp.bot.send_photo(chat_id=message.chat.id, photo=media)
full_size_photo_id = msg['photo'][-1]['file_id']
await db.add_file_info(full_size_photo_id)
else:
await dp.bot.send_photo(chat_id=message.chat.id, photo=photo_data)
if photo_data is None:
if len(photo_data) == 0:
from aiogram import types
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
await message.answer("Hello")
async def start_bot(message: types.Message, state: FSMContext):
state = dp.current_state(user=user_id)
переименовываете, т.к. вы ею переназначаете FSMContext
на dp.current_state(user=user_id)
await state.update_data(item_id=item_id)
выполнится успешно answer
не принимает параметр chat_idawait mybot.bot.send_message(chat_id = 123, text=message.text)
await mybot.bot.send_message(627976213, message.text)
if (message.text).isdigit():
bet=(int(message.text))