# File lib/rbot/core/auth.rb, line 627
  def auth_meet(m, params)
    nick = params[:nick]
    if !nick
      # we are actually responding to a 'hello' command
      unless m.botuser.transient?
        m.reply @bot.lang.get('hello_X') % m.botuser
        return
      end
      nick = m.sourcenick
      irc_user = m.source
    else
      # m.channel is always an Irc::Channel because the command is either
      # public-only 'meet' or private/public 'hello' which was handled by
      # the !nick case, so this shouldn't fail
      irc_user = m.channel.users[nick]
      return m.reply("I don't see anyone named '#{nick}' here") unless irc_user
    end
    # BotUser name
    buname = params[:user] || nick
    begin
      call_event(:botuser,:pre_perm, {:irc_user => irc_user, :bot_user => buname})
      met = @bot.auth.make_permanent(irc_user, buname)
      @bot.auth.set_changed
      call_event(:botuser,:post_perm, {:irc_user => irc_user, :bot_user => buname})
      m.reply @bot.lang.get('hello_X') % met
      @bot.say nick, _("you are now registered as %{buname}. I created a random password for you : %{pass} and you can change it at any time by telling me 'user set password <password>' in private" % {
        :buname => buname,
        :pass => met.password
      })
    rescue RuntimeError
      # or can this happen for other cases too?
      # TODO autologin if forced
      m.reply _("but I already know %{buname}" % {:buname => buname})
    rescue => e
      m.reply _("I had problems meeting %{nick}: %{e}" % { :nick => nick, :e => e })
    end
  end