mirror of
https://github.com/MrSedan/neuro-reply-bot-reworked.git
synced 2026-01-14 13:39:42 +03:00
Async problems...
This commit is contained in:
@@ -8,14 +8,15 @@ class NewPostFilter(Filter):
|
|||||||
async def __call__(self, message: types.Message) -> bool:
|
async def __call__(self, message: types.Message) -> bool:
|
||||||
if message.media_group_id is None or message.content_type != 'photo':
|
if message.media_group_id is None or message.content_type != 'photo':
|
||||||
return False
|
return False
|
||||||
try:
|
# if (message.caption and message.caption.startswith('/newpost '))
|
||||||
await neuroapi.post.get_by_media_group_id(message.media_group_id)
|
# try:
|
||||||
except:
|
# await neuroapi.post.get_by_media_group_id(message.media_group_id)
|
||||||
if not (message.caption.startswith('/newpost ') if message.caption else False):
|
# except:
|
||||||
return False
|
# if not (message.caption.startswith('/newpost ') if message.caption else False):
|
||||||
await neuroapi.post.new(message.caption.replace(
|
# return False
|
||||||
'/newpost ', ''), str(message.from_user.id), str(message.media_group_id), message.caption_entities)
|
# await neuroapi.post.new(message.caption.replace(
|
||||||
await message.answer('Пост успешно добавлен!')
|
# '/newpost ', ''), str(message.from_user.id), str(message.media_group_id), message.caption_entities)
|
||||||
|
# await message.answer('Пост успешно добавлен!')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ from .handler import MessageHandlerABC
|
|||||||
class NewPostCommand(MessageHandlerABC):
|
class NewPostCommand(MessageHandlerABC):
|
||||||
filter = NewPostFilter()
|
filter = NewPostFilter()
|
||||||
async def _command(self, message: types.Message):
|
async def _command(self, message: types.Message):
|
||||||
post: neuroTypes.Post = await neuroapi.post.get_by_media_group_id(message.media_group_id)
|
created = await neuroapi.image.add(str(message.from_user.id), message.photo[-1].file_id, message.has_media_spoiler, message.message_id, message.caption if message.caption else '', message.media_group_id, message.caption_entities, message)
|
||||||
await neuroapi.image.add(str(post.uuid), message.photo[-1].file_id, message.has_media_spoiler, message.message_id)
|
if created: await message.answer('Пост успешно добавлен!')
|
||||||
|
|
||||||
class NewPostSoloCommand(MessageHandlerABC):
|
class NewPostSoloCommand(MessageHandlerABC):
|
||||||
filter = NewSoloPostFilter()
|
filter = NewSoloPostFilter()
|
||||||
async def _command(self, message: types.Message):
|
async def _command(self, message: types.Message):
|
||||||
post: neuroTypes.Post = await neuroapi.post.new(message.caption.replace('/newpost ', ''), message.from_user.id, message_entities=message.caption_entities)
|
#FIXME: Починить добавление постов с одной картинкой, выводит ошибку на /info
|
||||||
await neuroapi.image.add(str(post.uuid), message.photo[-1].file_id, message.has_media_spoiler, message.message_id)
|
await neuroapi.image.add(str(message.from_user.id), message.photo[-1].file_id, message.has_media_spoiler, message.message_id, message.caption, None, message.caption_entities)
|
||||||
await message.answer('Пост успешно добавлен!')
|
await message.answer('Пост успешно добавлен!')
|
||||||
@@ -14,6 +14,7 @@ class PostCommand(MessageHandlerABC):
|
|||||||
settings = neuroTypes.BotSettings.get_instance()
|
settings = neuroTypes.BotSettings.get_instance()
|
||||||
try:
|
try:
|
||||||
post = await neuroapi.post.get_post_to_post()
|
post = await neuroapi.post.get_post_to_post()
|
||||||
|
print(post)
|
||||||
if (post):
|
if (post):
|
||||||
images = MediaGroupBuilder(
|
images = MediaGroupBuilder(
|
||||||
caption=post.text + '\n\nПредложка: @neur0w0men_reply_bot', caption_entities=post.message_entities)
|
caption=post.text + '\n\nПредложка: @neur0w0men_reply_bot', caption_entities=post.message_entities)
|
||||||
|
|||||||
5
main.py
5
main.py
@@ -16,7 +16,8 @@ from neuroapi.types import NeuroApiBot
|
|||||||
|
|
||||||
async def delay_bot()->None:
|
async def delay_bot()->None:
|
||||||
config = Config()
|
config = Config()
|
||||||
if config.token is None:
|
print(config)
|
||||||
|
if config.token is None or config.token == '':
|
||||||
logging.warning('Delay bot needs token in environment')
|
logging.warning('Delay bot needs token in environment')
|
||||||
return
|
return
|
||||||
bot = NeuroApiBot(config.token, storage=RedisStorage(redis.from_url(config.redis_url)))
|
bot = NeuroApiBot(config.token, storage=RedisStorage(redis.from_url(config.redis_url)))
|
||||||
@@ -25,7 +26,7 @@ async def delay_bot()->None:
|
|||||||
|
|
||||||
async def proxy_bot()->None:
|
async def proxy_bot()->None:
|
||||||
config = Config()
|
config = Config()
|
||||||
if config.proxy_token is None:
|
if config.proxy_token is None or config.proxy_token == '':
|
||||||
logging.warning('Proxy bot needs token in environment')
|
logging.warning('Proxy bot needs token in environment')
|
||||||
return
|
return
|
||||||
bot = NeuroApiBot(config.proxy_token)
|
bot = NeuroApiBot(config.proxy_token)
|
||||||
|
|||||||
@@ -1,14 +1,29 @@
|
|||||||
import json
|
import json
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
from aiogram import types
|
||||||
|
from aiogram.types import MessageEntity
|
||||||
from aiohttp import ClientSession
|
from aiohttp import ClientSession
|
||||||
|
|
||||||
from .api_method import ApiMethod
|
from .api_method import ApiMethod
|
||||||
|
|
||||||
|
|
||||||
class Image(ApiMethod):
|
class Image(ApiMethod):
|
||||||
async def add(self, post_id: str, file_id: str, has_spoiler: bool | None, message_id: int):
|
async def add(self, from_id: str, file_id: str, has_spoiler: bool | None, message_id: int, text: str, media_group_id: str | None, message_entities: Optional[List[MessageEntity]], message: types.Message):
|
||||||
payload = {'post_id': post_id, 'file_id': file_id,
|
payload = {'from_user_id': from_id, 'file_id': file_id,
|
||||||
'has_spoiler': has_spoiler, 'message_id': message_id}
|
'has_spoiler': has_spoiler, 'message_id': message_id }
|
||||||
|
if text != '':
|
||||||
|
payload['post_text'] = text.replace('/newpost ', '')
|
||||||
|
if media_group_id != 'None' and media_group_id is not None:
|
||||||
|
payload['media_group_id'] = media_group_id
|
||||||
|
if message_entities is not None:
|
||||||
|
mes_ent = list(map(lambda x: x.model_dump(), message_entities))
|
||||||
|
arr =[]
|
||||||
|
for item in mes_ent:
|
||||||
|
if item['type'] == 'bot_command': continue
|
||||||
|
item['offset'] -= 9
|
||||||
|
arr.append(item)
|
||||||
|
payload['message_entities'] = json.dumps(arr)
|
||||||
if has_spoiler is None:
|
if has_spoiler is None:
|
||||||
payload.pop('has_spoiler')
|
payload.pop('has_spoiler')
|
||||||
payload = json.dumps(payload)
|
payload = json.dumps(payload)
|
||||||
@@ -18,3 +33,4 @@ class Image(ApiMethod):
|
|||||||
data = await response.json()
|
data = await response.json()
|
||||||
if 'statusCode' in data:
|
if 'statusCode' in data:
|
||||||
raise Exception(data['message'])
|
raise Exception(data['message'])
|
||||||
|
return data['created']
|
||||||
|
|||||||
@@ -34,4 +34,5 @@ class Post(ApiModel):
|
|||||||
obj = super().to_dict()
|
obj = super().to_dict()
|
||||||
obj['message_entities'] = json.dumps(obj['message_entities'])
|
obj['message_entities'] = json.dumps(obj['message_entities'])
|
||||||
obj['media_group_id'] = str(obj['media_group_id'])
|
obj['media_group_id'] = str(obj['media_group_id'])
|
||||||
|
print(obj)
|
||||||
return obj
|
return obj
|
||||||
Reference in New Issue
Block a user