forked from uniborg/uniborg
make it work for different chats
This commit is contained in:
parent
d2c6607429
commit
ccd47186b1
|
@ -8,8 +8,11 @@ from telethon.errors.rpcerrorlist import ChatNotModifiedError
|
||||||
|
|
||||||
MULTI_EDIT_TIMEOUT = 80
|
MULTI_EDIT_TIMEOUT = 80
|
||||||
REVERT_TIMEOUT = 2 * 60 * 60
|
REVERT_TIMEOUT = 2 * 60 * 60
|
||||||
CHANNEL_ID = 1286178907
|
DEFAULT_TITLES = {
|
||||||
DEFAULT_TITLE = "Programming & Tech"
|
1040270887: 'Programming & Tech',
|
||||||
|
1384391544: 'Programming & Tech for girls',
|
||||||
|
1286178907: 'test supergroup'
|
||||||
|
}
|
||||||
rename_lock = asyncio.Lock()
|
rename_lock = asyncio.Lock()
|
||||||
revert_task = None
|
revert_task = None
|
||||||
|
|
||||||
|
@ -24,10 +27,10 @@ def fix_title(s):
|
||||||
return re.sub(r'(\S+)(\s+)?', replace, s)
|
return re.sub(r'(\S+)(\s+)?', replace, s)
|
||||||
|
|
||||||
|
|
||||||
async def edit_title(title):
|
async def edit_title(chat, title):
|
||||||
try:
|
try:
|
||||||
await borg(EditTitleRequest(
|
await borg(EditTitleRequest(
|
||||||
channel=CHANNEL_ID, title=title
|
channel=chat, title=title
|
||||||
))
|
))
|
||||||
except ChatNotModifiedError:
|
except ChatNotModifiedError:
|
||||||
pass # Everything is ok
|
pass # Everything is ok
|
||||||
|
@ -42,13 +45,14 @@ async def wait_for_delete(deleted_fut, timeout):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
async def wait_and_revert(timeout):
|
async def wait_and_revert(chat_id, timeout):
|
||||||
await asyncio.sleep(timeout)
|
await asyncio.sleep(timeout)
|
||||||
await edit_title(DEFAULT_TITLE)
|
await edit_title(chat_id, DEFAULT_TITLES[chat_id])
|
||||||
|
|
||||||
|
|
||||||
@borg.on(events.NewMessage(
|
@borg.on(events.NewMessage(
|
||||||
pattern=re.compile(r"(?i)programming (?:&|and) (.+)"), chats=CHANNEL_ID))
|
pattern=re.compile(r"(?i)programming (?:&|and) (.+)"),
|
||||||
|
chats=list(DEFAULT_TITLES.keys())))
|
||||||
async def on_name(event):
|
async def on_name(event):
|
||||||
global revert_task
|
global revert_task
|
||||||
new_topic = fix_title(event.pattern_match.group(1))
|
new_topic = fix_title(event.pattern_match.group(1))
|
||||||
|
@ -66,9 +70,10 @@ async def on_name(event):
|
||||||
)
|
)
|
||||||
|
|
||||||
with (await rename_lock):
|
with (await rename_lock):
|
||||||
await edit_title(new_title)
|
await edit_title(event.chat_id, new_title)
|
||||||
await asyncio.sleep(MULTI_EDIT_TIMEOUT)
|
await asyncio.sleep(MULTI_EDIT_TIMEOUT)
|
||||||
|
|
||||||
if revert_task and not revert_task.done():
|
if revert_task and not revert_task.done():
|
||||||
revert_task.cancel()
|
revert_task.cancel()
|
||||||
revert_task = asyncio.create_task(wait_and_revert(REVERT_TIMEOUT))
|
revert_task = asyncio.create_task(
|
||||||
|
wait_and_revert(event.chat_id, REVERT_TIMEOUT))
|
||||||
|
|
Loading…
Reference in New Issue