forcefully remove player if he leaves the group
This commit is contained in:
parent
746a9ff745
commit
2a637da75f
1 changed files with 29 additions and 1 deletions
30
bot.py
30
bot.py
|
@ -5,7 +5,7 @@ from random import randint
|
||||||
from telegram import InlineQueryResultArticle, ParseMode, Message, Chat, \
|
from telegram import InlineQueryResultArticle, ParseMode, Message, Chat, \
|
||||||
Emoji, InputTextMessageContent
|
Emoji, InputTextMessageContent
|
||||||
from telegram.ext import Updater, InlineQueryHandler, \
|
from telegram.ext import Updater, InlineQueryHandler, \
|
||||||
ChosenInlineResultHandler, CommandHandler
|
ChosenInlineResultHandler, CommandHandler, MessageHandler, filters
|
||||||
from telegram.utils.botan import Botan
|
from telegram.utils.botan import Botan
|
||||||
|
|
||||||
from game_manager import GameManager
|
from game_manager import GameManager
|
||||||
|
@ -134,6 +134,33 @@ def leave_game(bot, update):
|
||||||
bot.sendMessage(chat_id, text="Okay")
|
bot.sendMessage(chat_id, text="Okay")
|
||||||
|
|
||||||
|
|
||||||
|
def status_update(bot, update):
|
||||||
|
""" Remove player from game if user leaves the group """
|
||||||
|
|
||||||
|
if update.message.left_chat_member:
|
||||||
|
try:
|
||||||
|
chat_id = update.message.chat_id
|
||||||
|
game = gm.chatid_game[chat_id]
|
||||||
|
user = update.message.left_chat_member
|
||||||
|
except KeyError:
|
||||||
|
return
|
||||||
|
|
||||||
|
user_ids = list()
|
||||||
|
current_player = game.current_player
|
||||||
|
user_ids.append(current_player.user.id)
|
||||||
|
|
||||||
|
itplayer = current_player.next
|
||||||
|
|
||||||
|
while itplayer is not current_player:
|
||||||
|
user_ids.append(itplayer.user.id)
|
||||||
|
itplayer = itplayer.next
|
||||||
|
|
||||||
|
if user.id in user_ids:
|
||||||
|
gm.leave_game(user)
|
||||||
|
bot.sendMessage(chat_id, text="Removing %s from the game"
|
||||||
|
% display_name(user))
|
||||||
|
|
||||||
|
|
||||||
def start_game(bot, update):
|
def start_game(bot, update):
|
||||||
""" Handler for the /start command """
|
""" Handler for the /start command """
|
||||||
|
|
||||||
|
@ -439,6 +466,7 @@ dp.addHandler(CommandHandler('join', join_game))
|
||||||
dp.addHandler(CommandHandler('leave', leave_game))
|
dp.addHandler(CommandHandler('leave', leave_game))
|
||||||
dp.addHandler(CommandHandler('help', help))
|
dp.addHandler(CommandHandler('help', help))
|
||||||
dp.addHandler(CommandHandler('news', news))
|
dp.addHandler(CommandHandler('news', news))
|
||||||
|
dp.addHandler(MessageHandler([filters.STATUS_UPDATE], status_update))
|
||||||
dp.addErrorHandler(error)
|
dp.addErrorHandler(error)
|
||||||
|
|
||||||
start_bot(u)
|
start_bot(u)
|
||||||
|
|
Loading…
Reference in a new issue