...
if event.from_user and not event.from_me and event.text.startswith('/mchatgpt'):
...
event.from_user == False
. Можно сделать так:...
if ((event.from_user or event.from_chat) and not event.from_me) and event.text.startswith('/mchatgpt'):
...
parse_mode
и использовать entities для вставки своей ссылки в конец сообщения как MessageEntity
с типом "text_link", например, так:@dp.channel_post()
async def redactor(message: types.Message):
ent = message.entities
new_ent = [e for e in ent if e.type != "text_link"]
new_text = f'{message.text}\n'
link_text = "text for link"
link_address = "http://t.me/some_link"
new_ent.append(types.MessageEntity(
type="text_link", offset=len(new_text),
length=len(link_text), url=link_address
))
new_text = f'{new_text}{link_text}'
await message.edit_text(new_text, entities=new_ent)
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
if len(list1) == 1:
markup.row(list1[0])
if len(list1) == 2:
markup.row(list1[0], list1[1])
if len(list1) == 3:
markup.row(list1[0], list1[1], list1[2])
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
markup.row(*list1)
*
в Python можете прочитать здесь. def text_size(text: str, encoding: str = 'utf-8') -> int:
return len(text.encode(encoding))
...
answer = message.text
data = await state.get_data()
name = data.get('hi')
number = data.get('number')
priyom = data.get('priyom')
sdacha = data.get('sdacha')
...
import textwrap
text = "В центре города большого, где травинки не растёт, жил поэт, волшебник слова, - вдохновенный рифмоплёт. Рифмовал он что попало, просто выбился из сил, и в деревню на поправку, где коровы щиплют травку, отдыхать отправлен был."
shortened_text = textwrap.shorten(text, width=100, placeholder="…") # "В центре города большого, где травинки не растёт, жил поэт, волшебник слова, - вдохновенный…"