mirror of
https://github.com/civsocit/olgram.git
synced 2025-05-25 07:43:26 +00:00
Compare commits
4 Commits
c027ec656b
...
d0b570baa9
Author | SHA1 | Date | |
---|---|---|---|
|
d0b570baa9 | ||
|
1b1fe239f8 | ||
|
214824db14 | ||
|
147fc2a665 |
|
@ -12,6 +12,9 @@ Bitcoin:
|
||||||
Litecoin:
|
Litecoin:
|
||||||
``ltc1qxajsvz0lw44aa5nytuch8cp2g8x7a4cdase4y7``
|
``ltc1qxajsvz0lw44aa5nytuch8cp2g8x7a4cdase4y7``
|
||||||
|
|
||||||
|
Monero:
|
||||||
|
``84ymMfpw3vxFxsgmYbFURMiZLgQCmhKsZNiZiqZRbpH2WRka2UDjyDVZpX8XH1cZ9d5EghvPXrF5hEuzvK5NvHGE8za4Gmk``
|
||||||
|
|
||||||
Как убрать "Этот бот создан с помощью ..."
|
Как убрать "Этот бот создан с помощью ..."
|
||||||
----------------
|
----------------
|
||||||
Напишите нам на `@civsocit_feedback_bot <https://t.me/civsocit_feedback_bot>`_.
|
Напишите нам на `@civsocit_feedback_bot <https://t.me/civsocit_feedback_bot>`_.
|
||||||
|
@ -20,6 +23,8 @@ Litecoin:
|
||||||
История изменений
|
История изменений
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
- `2024-03-15` Тэги
|
||||||
|
- `2024-03-02` Рассылки
|
||||||
- `2024-03-01` Непрерывные потоки сообщений (опция)
|
- `2024-03-01` Непрерывные потоки сообщений (опция)
|
||||||
- `2024-02-17` Опция смены режима работы автоответчика: автоответчик отвечает на КАЖДОЕ сообщение
|
- `2024-02-17` Опция смены режима работы автоответчика: автоответчик отвечает на КАЖДОЕ сообщение
|
||||||
- `2024-01-12` Мультиязычность (стартовое сообщение и автоответчик)
|
- `2024-01-12` Мультиязычность (стартовое сообщение и автоответчик)
|
||||||
|
|
|
@ -115,3 +115,14 @@ BotFather - это официальный бот Telegram, создающий д
|
||||||
|
|
||||||
Если у вас возникли вопросы по использованию бота, или вы нашли ошибку - напишите
|
Если у вас возникли вопросы по использованию бота, или вы нашли ошибку - напишите
|
||||||
нам `@civsocit_feedback_bot <https://t.me/civsocit_feedback_bot>`_.
|
нам `@civsocit_feedback_bot <https://t.me/civsocit_feedback_bot>`_.
|
||||||
|
|
||||||
|
Тэги пользователей
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Пользователям можно проставлять теги. Например, в ответ на сообщение пользователя написать:
|
||||||
|
|
||||||
|
```
|
||||||
|
/tag #important
|
||||||
|
```
|
||||||
|
|
||||||
|
Тогда в user info (см. раздел опции) помимо информации о пользователе будет тег #important
|
||||||
|
|
|
@ -40,7 +40,7 @@ class OlgramSettings(AbstractSettings):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def version(cls):
|
def version(cls):
|
||||||
return "0.7.1"
|
return "0.7.2"
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@lru_cache
|
@lru_cache
|
||||||
|
|
|
@ -40,7 +40,11 @@ def _message_unique_id(bot_id: int, message_id: int) -> str:
|
||||||
return f"{bot_id}_{message_id}"
|
return f"{bot_id}_{message_id}"
|
||||||
|
|
||||||
|
|
||||||
def _thread_uniqie_id(bot_id: int, chat_id: int) -> str:
|
def _tag_uid(bot_id: int, user_id: int) -> str:
|
||||||
|
return f"tag_{bot_id}_{user_id}"
|
||||||
|
|
||||||
|
|
||||||
|
def _thread_unique_id(bot_id: int, chat_id: int) -> str:
|
||||||
return f"thread_{bot_id}_{chat_id}"
|
return f"thread_{bot_id}_{chat_id}"
|
||||||
|
|
||||||
|
|
||||||
|
@ -89,6 +93,9 @@ async def send_user_message(message: types.Message, super_chat_id: int, bot):
|
||||||
user_info += f" | lang: {message.from_user.locale}"
|
user_info += f" | lang: {message.from_user.locale}"
|
||||||
if message.forward_sender_name:
|
if message.forward_sender_name:
|
||||||
user_info += f" | fwd: {message.forward_sender_name}"
|
user_info += f" | fwd: {message.forward_sender_name}"
|
||||||
|
tag = await _redis.get(_tag_uid(bot.pk, message.from_user.id), encoding="utf-8")
|
||||||
|
if tag:
|
||||||
|
user_info += f" | tag: {tag}"
|
||||||
|
|
||||||
# Добавлять информацию в конец текста
|
# Добавлять информацию в конец текста
|
||||||
if message.content_type == types.ContentType.TEXT \
|
if message.content_type == types.ContentType.TEXT \
|
||||||
|
@ -117,7 +124,7 @@ async def send_to_superchat(is_super_group: bool, message: types.Message, super_
|
||||||
thread_timeout = ServerSettings.thread_timeout_ms()
|
thread_timeout = ServerSettings.thread_timeout_ms()
|
||||||
else:
|
else:
|
||||||
thread_timeout = ServerSettings.redis_timeout_ms()
|
thread_timeout = ServerSettings.redis_timeout_ms()
|
||||||
thread_first_message = await _redis.get(_thread_uniqie_id(bot.pk, message.chat.id))
|
thread_first_message = await _redis.get(_thread_unique_id(bot.pk, message.chat.id))
|
||||||
if thread_first_message:
|
if thread_first_message:
|
||||||
# переслать в супер-чат, отвечая на предыдущее сообщение
|
# переслать в супер-чат, отвечая на предыдущее сообщение
|
||||||
try:
|
try:
|
||||||
|
@ -127,11 +134,11 @@ async def send_to_superchat(is_super_group: bool, message: types.Message, super_
|
||||||
except exceptions.BadRequest:
|
except exceptions.BadRequest:
|
||||||
new_message = await send_user_message(message, super_chat_id, bot)
|
new_message = await send_user_message(message, super_chat_id, bot)
|
||||||
await _redis.set(
|
await _redis.set(
|
||||||
_thread_uniqie_id(bot.pk, message.chat.id), new_message.message_id, pexpire=thread_timeout)
|
_thread_unique_id(bot.pk, message.chat.id), new_message.message_id, pexpire=thread_timeout)
|
||||||
else:
|
else:
|
||||||
# переслать супер-чат
|
# переслать супер-чат
|
||||||
new_message = await send_user_message(message, super_chat_id, bot)
|
new_message = await send_user_message(message, super_chat_id, bot)
|
||||||
await _redis.set(_thread_uniqie_id(bot.pk, message.chat.id), new_message.message_id,
|
await _redis.set(_thread_unique_id(bot.pk, message.chat.id), new_message.message_id,
|
||||||
pexpire=thread_timeout)
|
pexpire=thread_timeout)
|
||||||
else: # личные сообщения не поддерживают потоки сообщений: просто отправляем сообщение
|
else: # личные сообщения не поддерживают потоки сообщений: просто отправляем сообщение
|
||||||
await send_user_message(message, super_chat_id, bot)
|
await send_user_message(message, super_chat_id, bot)
|
||||||
|
@ -216,6 +223,14 @@ async def handle_operator_message(message: types.Message, super_chat_id: int, bo
|
||||||
else:
|
else:
|
||||||
await banned_user.delete()
|
await banned_user.delete()
|
||||||
return SendMessage(chat_id=message.chat.id, text=_("Пользователь разбанен"))
|
return SendMessage(chat_id=message.chat.id, text=_("Пользователь разбанен"))
|
||||||
|
if message.text.startswith("/tag "):
|
||||||
|
tag = message.text.replace("/tag ", "")[:20].strip()
|
||||||
|
if tag:
|
||||||
|
await _redis.set(_tag_uid(bot.pk, chat_id), tag, pexpire=ServerSettings.redis_timeout_ms())
|
||||||
|
return SendMessage(chat_id=message.chat.id, text=_("Тег выставлен"))
|
||||||
|
else:
|
||||||
|
await _redis.delete(_tag_uid(bot.pk, chat_id))
|
||||||
|
return SendMessage(chat_id=message.chat.id, text=_("Тег убран"))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await message.copy_to(chat_id)
|
await message.copy_to(chat_id)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user