Skip to content

Commit

Permalink
Added the ability to edit LFG messages
Browse files Browse the repository at this point in the history
close #16
  • Loading branch information
movsesyanpv committed Jan 27, 2020
1 parent ee15a08 commit f110a4f
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 30 deletions.
24 changes: 24 additions & 0 deletions lfg.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,18 @@ When someone presses 👌, the group owner will receive a message with a list of

To choose a person press the corresponding emote. The list will update. **Don't** press multiple emotes, wait for the list update.

## LFG editing

Every group has it's own ID. To get information about your LFGs message the bot in DM `lfglist`. The bot will send you the list of your groups with the following information: name, time of start, channel name, server name, **ID**.

To edit the group send a message in the channel you want the updated group announcement be in.
The command has the following syntax:

```
{bot mention} edit lfg {ID}
[parameters as in the group creation]
```

# Описание LFG-функционала

Для получения в ЛС актуального синтаксиса команды упомяните бота с таким сообщением: `lfg -man`
Expand Down Expand Up @@ -95,3 +107,15 @@ To choose a person press the corresponding emote. The list will update. **Don't*
![](images/lfg_wishers_ru.png)

Для выбора участников среди желающих нажмите соответствующую реакцию-цифру. Список желающих обновится автоматически. **Не нажимайте несколько реакций до обновления списка**, дождитесь его обновления.

## Изменение группы

Все группы имеют уникальный идентификатор. Чтобы получить информацию о созданных вами группах, напишите в ЛС боту `lfglist`. Ответом будет список ваших групп с информацией о них в таком порядке: имя группы, время начала, название канала, название сервера, **идентификатор группы**.

Для редактирования группы отправьте сообщение-команду в том канале, в котором вы хотите разместить обновленный сбор.
Команда создания группы имеет следующий синтаксис:

```
{упоминание бота} edit lfg {идентификатор группы}
[параметры, как при создании группы]
```
85 changes: 55 additions & 30 deletions raid.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,38 +18,68 @@ def __init__(self, **options):
def add(self, message: discord.Message):
content = message.content.splitlines()

group_mode = 'basic'
name = ''
size = 1
args = self.parse_args(content, message, is_init=True)
group_id = message.id
owner = message.author.id

try:
self.c.execute('''CREATE TABLE raid
(group_id integer, size integer, name text, time integer, description text, owner integer,
wanters text, going text, the_role text, group_mode text, dm_message integer,
lfg_channel integer, channel_name text, server_name text, want_dm text)''')
except sqlite3.OperationalError:
pass

newlfg = [(group_id, args['size'], args['name'], datetime.timestamp(args['time']), args['description'],
owner, '[]', '[]', args['the_role'], args['group_mode'], 0, message.channel.id, message.channel.name,
message.guild.name, '[]')]
self.c.executemany("INSERT INTO raid VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", newlfg)
self.conn.commit()

@staticmethod
def parse_args(content, message, is_init):
time = datetime.now().strftime("%d-%m-%Y %H:%M")
time = datetime.strptime(time, "%d-%m-%Y %H:%M")
description = ''

args = {}
roles = []
if is_init:
args = {
'group_mode': 'basic',
'name': '',
'size': 1,
'time': datetime.strptime(time, "%d-%m-%Y %H:%M"),
'description': '',
'the_role': ''
}
for string in content:
str_arg = string.split(':')
if len(str_arg) < 2:
continue
if 'name:' in string or '-n:' in string:
name = str_arg[1].lstrip()
args['name'] = str_arg[1].lstrip()
if 'time:' in string or '-t:' in string:
try:
time_str = '{}:{}'.format(str_arg[1], str_arg[2])
time = datetime.strptime(time_str.lstrip(), "%d-%m-%Y %H:%M %z")
args['time'] = datetime.strptime(time_str.lstrip(), "%d-%m-%Y %H:%M %z")
except ValueError:
time = datetime.now().strftime("%d-%m-%Y %H:%M")
time = datetime.strptime(time, "%d-%m-%Y %H:%M")
args['time'] = datetime.strptime(time, "%d-%m-%Y %H:%M")
args['time'] = datetime.timestamp(args['time'])
if 'description:' in string or '-d:' in string:
description = str_arg[1].lstrip()
args['description'] = str_arg[1].lstrip()
if 'size:' in string or '-s:' in string:
size = int(str_arg[1])
args['size'] = int(str_arg[1])
if 'mode:' in string or '-m:' in string:
group_mode = str_arg[1].lstrip()
args['group_mode'] = str_arg[1].lstrip()
if 'role:' in string or '-r:' in string:
roles = [role.strip() for role in str_arg[1].split(';')]
group_id = message.id
owner = message.author.id

if not is_init:
if len(roles) == 0:
return args

the_role = []
if len(roles) == 0:
if len(roles) == 0 and is_init:
roles = ['guardian', 'recruit']
for role in message.guild.roles:
if role.name.lower() in roles:
Expand All @@ -59,20 +89,8 @@ def add(self, message: discord.Message):
the_role_str = the_role[0].mention
for i in the_role[1:]:
the_role_str = "{}, {}".format(the_role_str, i.mention)

try:
self.c.execute('''CREATE TABLE raid
(group_id integer, size integer, name text, time integer, description text, owner integer,
wanters text, going text, the_role text, group_mode text, dm_message integer,
lfg_channel integer, channel_name text, server_name text, want_dm text)''')
except sqlite3.OperationalError:
pass

newlfg = [(group_id, size, name, datetime.timestamp(time), description,
owner, '[]', '[]', the_role_str, group_mode, 0, message.channel.id, message.channel.name,
message.guild.name, '[]')]
self.c.executemany("INSERT INTO raid VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", newlfg)
self.conn.commit()
args['the_role'] = the_role_str
return args

def del_entry(self, group_id):
self.c.executemany('''DELETE FROM raid WHERE group_id LIKE (?)''', [(group_id,)])
Expand Down Expand Up @@ -261,13 +279,20 @@ async def dm_lfgs(self, user):
await user.create_dm()
await user.dm_channel.send(msg)

async def transfer(self, message, old_lfg):
new_lfg = await message.channel.send(old_lfg.content)
async def edit(self, message, old_lfg, translations):
args = self.parse_args(message.content.splitlines(), message, is_init=False)

for item in args:
self.c.execute('''UPDATE raid SET {}=? WHERE group_id=?'''.format(item), (args[item], old_lfg.id))
self.conn.commit()

new_lfg = await message.channel.send(self.get_cell('group_id', old_lfg.id, 'the_role'))
await new_lfg.add_reaction('👌')
await new_lfg.add_reaction('❌')

self.c.execute('''UPDATE raid SET group_id=? WHERE group_id=?''', (new_lfg.id, old_lfg.id))
self.c.execute('''UPDATE raid SET lfg_channel=? WHERE group_id=?''', (message.channel.id, new_lfg.id))
await old_lfg.delete()
await message.delete()
await self.update_group_msg(new_lfg, translations)
self.conn.commit()

0 comments on commit f110a4f

Please sign in to comment.